Willkommen im Loxone Community Forum. Um alle Funktionen nutzen und sehen zu können, registriere dich bitte zuerst. Dies gilt auch für das herunterladen von Dateien.
Dieser Bereich ist für fertige Lösungen gedacht. Nutze bitte für Diskussionen die anderen Bereiche.
Als Hochsprachenprogrammierer fällt mir PicoC nicht schwer.
Habe auch schon einen Plan wie die Statusabfrage für den Yamaha zu realisieren ist.
Besteht noch Interesse? Falls ja, werde ich den Code zur Verfügung stellen, sobald ich Zeit finde, diesen umzusetzen.
Als Hochsprachenprogrammierer fällt mir PicoC nicht schwer.
Habe auch schon einen Plan wie die Statusabfrage für den Yamaha zu realisieren ist.
Besteht noch Interesse? Falls ja, werde ich den Code zur Verfügung stellen, sobald ich Zeit finde, diesen umzusetzen.
Ja die Yamaha Statusabfrage besteht noch.
Bin auch gerne bereit es zu testen
Ich habe nur gemerkt das Neue Reciever keine web gui mehr anbieten.
Hier mal eine erste Version des Pico Codes.
Eingang AI1 muss mit UNGLEICH 0 beschaltet werden, damit die Schleife für die Abfrage läuft.
Ausgang AQ1 gibt 1 an, wenn die Abfrage erfolgreich war, oder 0 wenn nicht.
Ausgang AQ2 gibt 1 an, wenn der Yamaha auf ON steht
Ausgang AQ3 gibt die Lautstärke in dB aus.
Die Schleife im Code läuft endlos. Die Zykluszeit richtet sich natürlich nach der Netzwerkgeschwindigkeit, sowie der Antwortzeit des Yamahas und des Timeouts in der
"stream_read" Funktion. Den Timeout habe ich da derzeit auf 200ms stehen. Hatte 100ms probiert, aber das war wohl zu kurz.
WICHTIG: Recht weit oben müsst ihr natürlich noch die IP Adresse für euren Yamaha angeben. Dort steht derzeit meine
Bitte gebt mal kurzes Feedback ob es funktioniert.
Wie würde ich zB bei Mute = ON (1) einfach Volume = Mute ON setzen?
Um die Tuner, Server, Napster & Net-Radio auch über GUI zu nutzen bräuchten wir dann noch die Auswertung nach Input Source.
Wie würde das in gleichen Script ausgewertet und reichen die dann die READ_BUFFER_SIZE 1024?
Beispiel Net-Radio
<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><NET_RADIO><List_Info>GetParam</List_Info></NET_RADIO></YAMAHA_AV>" // Status Abfage Net Radio Playlist
der Eingang AI1 muss länger als nur für einen Impuls beschaltet sein. Sprich einen Schalter...nicht einen Taster.
Ich habe bei mir zum Testen eine Konstante mit dem Wert 1,0 erstellt und angehängt. Quasi Dauerbetrieb.
Deine Abfragen für Mute sollte gehen. Bei der Input_Sel steht glaube ich auch ein String wie "HDMI1". Da kommst du mit "atof()" nicht weit.
"atof()" wandelt einen Zahlenstring in einen Float-Wert um. Wenn dort aber z.B. "HDMI1" steht kommt da nix bei raus.
Da müsste man quasi auf alle Möglichkeiten (HDMI1, HDMI2 etc.) prüfen und je nach Fall dann einen Wert (0, 1, 2...) an einen Ausgang schalten.
Was genau meinst du mit "Wie würde ich zB bei Mute = ON (1) einfach Volume = Mute ON setzen?"?
Man kann sicher auch Tuner etc. auswerten. Der READ_BUFFER_SIZE 1024 ist nur ein zwischenpuffer für das Lesen vom Stream.
Der eigentliche Puffer, welcher groß genug für die komplette Antwort sein muss ist "char Response[RESPONSE_SIZE];".
Ich werde den Baustein noch weiter verfeinern und nach Möglichkeiten etwas aufräumen. Das war nur ein erster Wurf, welchen ich gestern Abend in ner halben Stunde zusammengebastelt habe.
Sozusagen eine Art "Proof of Concept".
Wenn ich per etwas an der Stereoanlage änder, soll mir dieses PicoC Programm den aktuellen Status wenn benötigt ohne großen Zeitverzögerung darstellen.
Somit sollte ich ZB. per Ulux Taster die Lautstärke regeln soll mit diese sofort angezeigt werden. Aktuell haben ich per Http Abfrage ca 10 Sec Zeitverzögerung.
Jetzt noch einmal zu dem Program. Wie kann ich testen was as mit der BZGL der IP falsch ist?
Bei Meiner Abfrage per Virtuellen Ausgang geht folgendes:
Adresse http://192.168.0.30:80
Befehl bei EIN : /YamahaRemoteControl/ctrl
HTTP-POST Befehl bei EIN: <?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><Main_Zone><Basic_Status>GetParam</Basic_Status></Main_Zone></YAMAHA_AV>
HTTP-Antwort speichern /user/common/answer.xml
Mit MUTE mein ich das bei Volume noch die DB Zahlen stehen auch wenn MUTE ON an ist.
Um Platz zu sparen sollte bei Volumen dann Mute ON oder 0 Stehen
Bzgl Source wie Werte ich dann die HDMI1 ---> HDMIx aus? Mir reicht es wenn Text ausgegeben werden kann, diesen kann ich dann per Statusbaustein auswerten. benötigen wir ja auch für die Song Texte brauchen.
Ist schon Verstanden wie das Funktionieren soll.
Mein Baustein ist aktuell so gebaut das dieser zyklisch permanent den Status vom Yamaha abruft.
Der Eingang AI1 ist lediglich dazu gedacht, diesen zyklischen Abruf "pausieren" zu können.
Im Prinzip würde es wie folgt laufen:
Mein Baustein ruft kontinuierlich den Status ab.
Steuern tust du wie gehabt über die virtuellen HTTP Ausgänge. Diese werden ja ohne Verzögerung gesendet.
Ich könnte meinen Baustein auch abändern, so das dieser auf einen "Change" beim AI1 einmal den Status abruft.
Aber dann könnte es zu Überschneidungen kommen.
Sprich der Befehl für höhere Lautstärke könnte gesendet werden, aber beim (dann per Impuls gesteuertem) Abruf über meinen Baustein der Status vom Yamaha noch nicht aktualisiert gesendet wird.
Bezüglich Texte....da hätte ich mal ne Frage. Bin ja noch recht bei Loxone. Ich kann zwar einen Text an die 3 Textausgänge des PicoC Bausteins schreiben.....
aber wie gehts von da aus weiter? Virtuelle Ausgänge als auch Merker nehmen keine Texte entgegen. Kann den Ausgang an einen Logger hängen...das nützt nur nicht so viel.
Die Source könnte man wie folgt auswerten:
- Prüfe String im Source Feld.
- Wenn "HDMI1" -> Setze Ausgang X auf 0
- Wenn "HDMI2" -> Setze Ausgang X auf 1
- usw.
Man müsste sich dann auf Source -> Wert Zuweisungen einigen.
Wie aber bekommt man dann den Titel von einem Song in die Visu von Loxone?
Bezüglich deines "IP" Fehlers.
Schalte den Eingang AI1 mal per Konstante auf 1 und schau ob an den Ausgängen was ankommt. Damit wäre dann zumindest bestätigt, das es vom Prinzip her funktioniert.
ich erhalte aktuell folgende Fehlermeldung per Virtuellem Status. :
char* pPost_Data = "<?xml version="1.0" encoding="utf-8"?><YAMAHA_AV cmd="GET"><Main_Zone><Basic_Status>GetParam</Basic_Status></Main_Zone></YAMAHA_AV>"; ^ Programm Yamaha Statusabfrage:36:35 value not expected here
bei dem String der dort angegeben ist musst du allen Anführungszeichen ein Backslash '\' voranstellen. Sonst wird der String unterbrochen. Der Backslash ist wohl beim kopieren hier ins Forum flöten gegangen.
Also bei xml version="1.0" sowie encoding="utf-8" und cmd="GET" muss bei allen Anführungszeichen ein Backslash davor.
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar