zu dumm zum kombinieren

ja es kommt leicht zu missverständnissen. und so sah ich es:

ein bit kann 0 oder 1 sein. ein character besteht aus 8 solchen bits und kann dezimalwerte von 0 bis 255 speichern. HJH hat von Integer gesprochen. Integer wird mit 2 Bytes gespeichert, also 16 bits. Also kann ich mit Integer 16 bits speichern. Demnach kann ich damit 16 Schaltzustände definieren und in einem Integer speichern.

Also bin ich anfangs davon ausgegangen, das der FS20 Sender einen code sendet der als integer in binärform gespeichert wird, wovon das letzte bit den zustand für ein oder aus definiert. In C gibts ja solche Bitweisen Operatoren, mit denen man gezielt bits eines chars umlegen kann. So dachte ich meinte es HJH mit seinem Problemlöser.

Aber ich denke es ist eben nicht so gemeint und kann demnach das 0.4 Sekunden Problem mit einem 1-Kanal Taster definitiv nicht lösen!
Was das komplett seltsame Verhalten meiner Lampe beweist.

Hallo Hinti,

es ist leider so, dass die EIN-Tasten-Methode mit dem von mir angewandten Verfahren nicht funktionieren kann. Der übermittelte Code gibt keinerlei Auskunft über EIN- oder AUS-Zustand. Er enthält, wie zu erwarten war, nur die Information zu toggeln. Damit fehlt die eindeutige Grundlage.

Das ist einer der Gründe, warum ich ausschließlich die ZWEI-Tasten-Methode verwende. Man ist damit wesentlich flexibler.

Gruß
HJH

Im Prinzip ja auch mein reden, aber nach diesem kleinen Intermezzo hier bin ich zu dem Schluss gekommen das man an sich die selben Informationen im 1 Tasten Mode erhalten kann - aber man muss letztlich doppelt soviele Instanzen anlegen und verbraucht entsprechened natürlich auch doppelt soviel Adressen vom FS20 - das macht ja eigentlich keinen Sinn :wink:

Anti

Ja jetzt ist ja endlich alles klar gestellt. Ich danke euch.

Ich kann und will in meinem speziellen Fall eben nur den 1-Kanal Mode verwenden. Ist ja auch nicht so schlimm,
ich muss eben nur wissen was ich tun kann. Denn in dieser Form wurde das hier noch nicht diskutiert.
Es heißt dann nämlich immer nur man soll den 2-Kanal mode verwenden und nichts weiter.

Also scheint mir die Blockiermethode von Anti für diesen Fall die beste Methode zu sein :cool:
(angesichts dessen werde ich den titel des postings nochmal anpassen)

ALLGEMEINE FRAGE: Kann ich den Titel des Themas nicht mehr ändern?
(ich würde gerne: „zu dumm zum kombinieren“ ändern in: „0.4s Problem, 0.4s, Sekunden Problem. 1 Kanal FS20…“)

Btw besser wäre es wohl noch microtime oder so zu verwenden. Ich bin nur auf 2 Sek gegangen, da es aufgrund von „Rundungsfehlern“ so wie es jetzt ist1,000001 - 2 Sek blockieren kann … und 1 Sek sollte das „warten“ wohl sein (naja mindestens der Abstand zwischen 2 Impulsen)

Aber die verfeinerung überlasse ich dir dann mal :wink:

Anti

So gehts nun recht zufriedenstellend, danke für eure hilfe…
PS: die FB Variable Updated für die Zeitberechnung geht nicht so gut, am besten gehts einfach indem ich das Licht selber zu rate ziehe…


   $t1 = time() / 60*60;
   $t2 = IPS_GetVariable(/* LICHT-STATUSVARIABLE - id*/); 
   $t2 = $t2['VariableUpdated'] / 60*60;
   if (($t1 - $t2) < 3) 		//Licht zuletzt geaendert Schwelle
   {
      return; // Abbrechen
   }

	if( GetValueBoolean("Badspot-A.Status") ){
		FS20_SwitchMode( 32349, FALSE );			//LICHT AUS
		IPS_SetScriptTimer("Badspot-A.Timeout",0);		//NoTimer
		}
	else {
		FS20_SwitchMode( 32349, TRUE );				//LICHT EIN
		FS20_SetIntensity( 32349, 16, 0 );			//100%
		IPS_SetScriptTimer("Badspot-A.Timeout", (60 * 90));	//Timer
		}