Steuerung Philips Hue

Das freut mich übrigens sehr zu hören, habe ich das Thema doch vor ein paar Jahren hier schonmal vorgeschlagen. Die Idee wurde damals aber eher ins Lächerliche gezogen.

Der kleine Unterschied ist, daß Du derlei Steuerung als native mAirList-Eigenschaft impliziert sehen wolltest. Darauf, daß es durchaus Wege gibt, sie mit mAirList-Bordmitteln zu verwirklichen, habe ich seinerzeit schon hingewiesen. Das wolttest Du aber nicht.

Konnte man MQTT nicht auch einfach per http get ansprechen bzw. Über ein Command-line Tool?

Die andere Flussrichtung, fände ich da tatsächlich schon spannender… :wink: Dafür würde ich meiner Home-Studio sogar ein Upgrade spendieren, denke ich, Advanced oder Advanced-plus… :thinking:

1 Like

Ja, kann man. mosquitto_pub und mosquitto_sub sind Kommandozeilen Clients die auch unter Windows gehen müssten (zumindest hab ich auf die Schnelle schon die Downloads gefunden).

Habe es mit ON AIR und OFF AIR probiert. Die einzigen Befehle bei dem Mairlist reagiert.
Hier kommt folgendes
Fehler Runtime error “Access violation at address 00BAA740 in module ‘mAirList.exe’. Read of address 00000000” in background script C:\ProgramData\mAirList\6.3\config\HUE.mls, handling message: EXECUTE 331E187E3C2BB478 OFF AIR
Eventuell muss im Script den Fehler suchen oder habe ich einen Denkfehler?
Meins schaut so aus:
begin
if Command = ‘ON AIR’ then begin
HTTPPutRaw(‘https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state’, ‘application/json’, ‘{“on”:true}’, nil);
end;

if Command = ‘OFF AIR’ then begin
HTTPPutRaw(‘https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state’, ‘application/json’, ‘{“on”:false}’, nil);
end;
end;
begin
end.

Keine Idee ?

Danke

Schade das es nicht funktioniert. Meistens ist es leider so. Erst heiß machen dann kommt nix mehr. :wink:
Ein Hinweis was man falsch macht wäre schön gewesen.
Allen schönes schaffen noch

Bumpen ist erlaubt, aber bitte freundlich bleiben! :slight_smile:

Kannst du bitte noch einmal das komplette Script posten, und zwar in einem Code-Block:

Bildschirmfoto von Google Chrome (18-05-21, 18-56-15)

Da scheint auch oben was zu fehlen…

1 Like

Sorry war nicht meine Absicht unfreundlich rüber zu kommen.

procedure OnExecuteCommand(Command: string);
begin
if Command = 'ON AIR' then begin 
HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":true}', nil);
end;
if Command = 'OFF AIR' then begin 
HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":false}', nil);
end;
end;
begin
end.

Wie gibst Du denn die Befehle ON AIR und OFF AIR? (Bitte den Code durch Einrücken strukturieren, siehe oben.)

Sorry ich hab leider keine Ahnung was mit Einrücken gemeint ist und ich habe den gleichen Code wie niconline oben gepostet hat genommen. Nur mit dem Befehl ON AIR und OFF AIR.
Mit was anderen konnte ich es für mich nicht in Verbindung setzen.

Danke für Eure Hilfe

Das ist gemeint:


Also:

procedure OnExecuteCommand(Command: string);
begin
  if Command = 'ON AIR' then
  begin 
    HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":true}', nil);
  end;
  if Command = 'OFF AIR' then
  begin 
    HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":false}', nil);
  end;
end;

begin
end.


Und woher kommen die Befehle ON AIR und OFF AIR? Die muß das System ja irgendwie erhalten.

1 Like

Dankeschön. :+1:

ON AIR und OFF AIR Habe ich auch für das USB Gamepad auf einen anderen Rechner verwendet. Kommt von Mairlist. Daher dachte ich es passt

Probiere mal folgendes:

procedure OnOnAir;
begin
  HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":true}', nil);
end;

procedure OnOffAir;
begin
  HTTPPutRaw('https://192.168.178.65/api/YFX86CrQISptZ7ePraBUgzm49RqBXYQdDChmGV4C/lights/19/state', 'application/json', '{"on":false}', nil);
end;

begin
end.

Kann es sein, dass es dieses Script Probleme in der V8 verursacht?
Nicht falsch verstehen, das Script läuft bei mir ohne Probleme, aber eben in V7.x
In V8 hab ich jetzt auch alles wie zuvor eingestellt, jedoch greift das Script nicht.
Zur Info: Ich hab einen eigenen Befehl, wenn ein Button am Airlite gedrückt wird, sobald der Befehl gesendet wird, leuchtet die definierte Hue-Lampe. (Gerade eben nochmals mit v7 getestet. da klappt das Script komischerweise)

var
Mican, Hinzan: boolean;

procedure OnAutomationOn(PlaylistIndex: integer);
begin
ExecuteCommand('AUTOBUTTON BACKGROUNDCOLOR #FF0000');
ExecuteCommand('AUTOBUTTON TEXT Automation');
AirliteRemote(0).SetLED(8, alcRed);
end;

procedure OnAutomationOff(PlaylistIndex: integer);
begin
ExecuteCommand('AUTOBUTTON BACKGROUNDCOLOR #BDC3C7');
ExecuteCommand('AUTOBUTTON TEXT LiveAssist');
AirliteRemote(0).SetLED(8, alcGreen);
end;

procedure OnExecuteCommand(Command: string);
begin
  if (Command = 'TOGGLEMIC') AND NOT Mican then begin 
  Mican := true;       
  ExecuteCommand('MICSTATUS BACKGROUNDCOLOR #D22630');       
  ExecuteCommand('MICSTATUS TEXT MIC ON');

    HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/1/state', 'application/json', '{"on":true, "sat":254, "bri":128,"hue":65020} ', nil);
    HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/3/state', 'application/json', '{"on":true, "sat":254, "bri":128,"hue":65020} ', nil);


  end
  else if (Command = 'TOGGLEMIC') AND Mican then begin  
  Mican := false; 
  ExecuteCommand('MICSTATUS BACKGROUNDCOLOR #37474F');      
  ExecuteCommand('MICSTATUS TEXT MIC OFF');

    HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/1/state', 'application/json', '{"on":false}', nil);

    HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/3/state', 'application/json', '{"on":false}', nil);


  end;

  if (Command = 'TOGGLEARI') AND NOT Hinzan then begin 
  Hinzan := true;       
  AirliteRemote(0).SetLEDBlink(16, alcRed, alcNone, albsFast);
  ExecuteCommand('VKSSTATUS BACKGROUNDCOLOR #007749');
  ExecuteCommand('CARTWALL 1 START');
  ExecuteCommand('VKSSTATUS TEXT VKS ON');

    HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/2/state', 'application/json', '{"on":true, "sat":254, "bri":128,"hue":27987} ', nil);

  end
  else if (Command = 'TOGGLEARI') AND Hinzan then begin  
  AirliteRemote(0).SetLED(16, alcGreen);
  Hinzan := false; 
  ExecuteCommand('VKSSTATUS BACKGROUNDCOLOR #37474F');
  ExecuteCommand('CARTWALL 2 START');
  ExecuteCommand('VKSSTATUS TEXT VKS OFF');
    HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/2/state', 'application/json', '{"on":false}', nil);
  end;
end;

begin
end.

Bitte um Hilfe… Danke
Patrick

Was ist denn? Geht es einfach nicht? Oder verursacht es Fehlermeldungen? Gibt es verdächtige Logeinträge?

1 Like

Nein, so blöd sich das anhört, es geht einfach nicht - zumindest bei mir aktuell, vielleicht hab ich ja einen Fehler…
Im Log ist auch kein Fehler zu erkennen, alles wird erkannt und geladen.
Zum Hintergrund:
Ich hab in der Fernsteuerung des Airlite die Befehle eingefügt. Bei Mic-On wird dementsprechend TOGGLEMIC gesendet, beim Taster rechts unten der Cartwall TOGGLEARI. Über Sinn und Zweck lässt sich zwar streiten, aber das machen wir mal an anderer Stelle…
Dann hab ich das Hintergrundscript im v7.x Ordner. in V7.4 funktioniert alles wie gewollt, die entsprechende Hue nimmt die gewünschte Farbe an.
Ich hab die V8 erst seit 2 Wochen im Einsatz, hab also die Konfiguration zuerst aus der V7.x übernommen, es gab keinen Fehler im Log. Dachte weil das Script im Ordner der V7 liegt, dass das eventuell Probleme bringt, also alles in den Ordner der V8 kopiert. In der Konfiguration (nicht Systemsteuerung) dann das Script aus dem neuen Ordner gewählt.
Die Bildschirmelemente nehmen ja auch die gewünschte Farbe an, also das Script an sich funktioniert ja, nur die Kommunikation mit dem Hue-System nicht. Ich hab auch probiert, ob ich eventuell ein neues Gerät bei Hue anmelden muss, also einen neuen Key generiert, aber auch das hat nicht geholfen.
Falls ich noch was vergessen hab, bitte Fragen, Danke für eure Hilfe und Unterstützung!
Patrick

Bist Du sicher, daß Deine Lampe auch tatsächlich die 192.168.0.10 hat? Schau dafür in Deinem Router nach bei der MAC/IP-Zuordnungstabelle. Überprüde mit Wireshark, ob die HttpPut-Kommandos tatsächlich das senden was sie sollen.

Schreibe ein neues Skript („from scratch“), das lediglich auf Buttondruck einen Schaltbefehl sendet.

Standard-Frage: Hast Du den allerneuesten Snapshot installiert? In den letzten zwei Wochen gab es ja ein paar Bugfixes in Richtung Geräte und Verbindungen.

Also die Adresse des Hue stimmt, hab’s ja wie gesagt in der V7.4 gestern noch mal getestet, (1:1 gleiches Script nur in einem anderen Ordner) da gingen die Lampen an. Nichtsdestotrotz werde ich ein neues Script die Tage mal erstellen, um zu testen, ob sich irgendwo ein Fehler eingeschlichen hat. Auch den neuesten Snapshot werde ich dann Testen und die Tage mal berichten. Danke mal für diese Ansätze!

1 Like

Liebe Leute, Update:
Snapshot 6024 hab ich jetzt heruntergeladen, leider bringt diese Version keine Änderung in besagten Verhalten.

Dann hab ich als nächstes ein Testscript erstellt:

procedure OnExecuteCommand(Command: string);
begin
if Command = 'Tisch_ON' then begin 
HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/1/state', 'application/json', '{"on":true}', nil);
end;
if Command = 'Tisch_OFF' then begin 
HTTPPutRaw('https://192.168.0.10/api/CsPvZ-TRYkG8W8iLr2Y49LP3-v67qVssRaHnrGpl/lights/1/state',  'application/json', '{"on":false}', nil);
end;
end;
begin
end.

Auch dieses funktioniert einwandfrei - in der V7.4, die Hue-Lampe wird aktiviert bzw. deaktiviert bei den Kommandos, in der V8 nicht.
Die Kommandos - Tisch_ON und Tisch_OFF - wurden hierbei zu Testzwecken als Hotkeys konfiguriert, und kommen im Programm an, die Fernsteuerungskonsole hat mir zumindest nach Tastendruck entsprechende Kommandos angezeigt.

Das eigentliche Script, als auch das Test-Script werden in mAirList korrekt geladen, es gibt keinen Error im System-Protokoll…

1 Like