Erstellte Forenantworten
-
AutorBeiträge
-
adminAdministrator
Sehr schön! Freut mich, dass du dein Projekt erfolgreich umsetzen konntest und dir LogoControl gefällt. Wenn ich mir den Screenshot so ansehe, würde ich dich nun schon zu den Fortgeschrittenen User zählen, da du bereits mit eigenen ValueTextConvertern hantierst 👍
adminAdministratorBeim Updaten bitte die Migrationsanleitung auf 0.5.x beachten, da sich das Konfig-Format geändert hat und manuell Hand angelegt werden muss. Das mit dem WLAN hatte ich schon vermutet. Dass LogoControl nach Verbindungsverlust keinen Reconnect hinbekommt ist zwar auch ein Problem (da gab es in der 0.5.0 jedoch Verbesserungen), aber ich würde trotzdem empfehlen die eigentliche Ursache (instabile Netzwerkverbindung über WLAN) zu lösen. Sprich: Raspberry Pi (mit LogoControl) und LOGO über Switch per Kabel verbinden. Da LogoControl ja ständig (alle 250ms) Daten von der LOGO pollt, erzeugt es auch unnötig Traffic in deinem WLAN. Außerdem ist diese Verbindung zeitkritisch (z.B. wenn du Trigger nutzt). Die Weboberfläche auf Client-Seite dagegen pollt ihre Daten nicht zyklisch vom LogoControl-Server, sondern überträgt nur bei Updates neue Daten (Event-gesteuert).
adminAdministratorHi, du scheinst eine alte Version von LogoControl einzusetzen. Bitte update zuerst auf die neueste Version und schau ob das Problem dadurch behoben ist. Falls dann der Fehler immer noch auftritt: wo werden veraltete Werte angezeigt? Auf der Weboberfläche von LogoControl oder evlt. in der NetIO App? Wie sieht die Netzwerkverbindung zwischen Logo und LogoControl-Rechner aus?
adminAdministratorOh, dann verwendest du noch eine alte Version von LogoControl mit dem alten Format der config.xml. Die Version mit den CORS Headern basiert auf der 0.5.x Reihe, bei welcher du eine neue config benötigst (siehe Migrationsanleitung im Download Bereich). Sprich: erst musst du vollständig updaten auf 0.5.2 und dann die CORS Exe verwenden.
adminAdministratorOkay, hab mich die Tage jetzt auch noch mal ausführlicher mit der Same-Origin-Policy beschäftigt. Das Problem auf deiner Seite zu lösen ist eher schwierig. Die bevorzugte Lösung für diese „Sicherheitsrichtlinie“ nennt sich Cross-Origin Resource Sharing welche mittlerweile von den meisten Browsern unterstützt wird. Damit lassen sich per XMLHttpRequest auch fremde Ressourcen laden. Bedingung: der Server muss ausdrücklich mitteilen, dass seine Ressourcen in einem XMLHttpRequest eines fremden Clients angefordert werden dürfen. Er tut dies indem er folgenden HTTP-Header in der Response setzt:
Access-Control-Allow-Origin: *Da dies wie gesagt vom Server (also in unserem Fall von LogoControl) gesetzt werden muss, hab ich mal eine Testversion von LogoControl erstellt, die diesen HTTP-Header sendet:
LogoControl.exe (mit CORS-Header)Teste bitte mal, ob das dein Problem behebt. Falls ja (wovon ich ausgehe), werde ich ein neues Release von LogoControl veröffentlichen.
adminAdministratorAlso in der LogoControl-WebGUI mache ich ja auch AJAX-Calls um Methoden aufzurufen oder Attribute zu setzen, allerdings mach ich das nicht per Hand mit XMLHttpRequest sondern mit jQuery, weil’s deutlich einfacher ist:
// call method function callDeviceMethod(deviceId, methodId) { jQuery.get('rest/devices/' + deviceId + '/methods/' + methodId); } // set attribute function setDeviceAttribute(deviceId, attributeId, attributeName, currentValue) { var newValue = prompt("Attributwert \"" + attributeName + "\" ändern:", currentValue); if (newValue != null) { jQuery.get('rest/devices/' + deviceId + '/attributes/' + attributeId + '/valueText?set=' + newValue); } }
Kannst dir ja mal den Seitenquelltext von der LogoControl-Haupseite anschauen. Die URL die du versuchst aufzurufen scheint auch richtig zu sein. Lass mich raten: wenn du die URL im Browser von Hand aufrufst funktioniert es, nur eben nicht per AJAX? Dann könnte der folgende Artikel hilfreich sein, da du vermutlich auf dem Pi deinen eigenen Webserver laufen hast, welcher unter einem anderen Port läuft als der LogoControl-Webservice:
adminAdministratorPoste mal deine config.xml. Zeile 0, Spalte 0 scheint ja direkt das erste Zeichen zu sein, evtl. ist die Datei kaputt. Startet LogoControl denn mit der Default config.xml? Diese wird automatisch beim Programmstart erstellt, wenn du die alte config.xml löschst (oder umbenennst).
adminAdministratorHab da eine Vermutung: Welche Version von Libnodave verwendest du? Alle neuen Versionen 0.8.5.x funktionieren nämlich nicht mehr mit der Logo. Die letzte mir bekannte kompatible Version ist die 0.8.4.6 welche ich auch in LogoControl verwende.
adminAdministratorOut-of-the-Box läuft LogoControl nicht auf einer Synology (erst mal egal welcher Typ), aber ich will es nicht ausschließen, dass es machbar wäre (der Atom mit x86-Architektur deiner DS1515+ ist schon mal ein gutes Zeichen). Wichtig ist eine funktionierende Mono-Runtime der Version 3.10 zu haben, keine Ahnung welche Version Synology gerade als Paket bereitstellt. Weiterhin muss die libnodave für die Zielplattform kompiliert werden. Auch die Shell-Scripte sind auf den Raspberry maßgeschneidert und müssten noch portiert werden. Alles in allem recht viel Handarbeit, aber machbar. Ich würde anstatt der Lebenszeit allerdings lieber 40 EUR für einen Pi investieren…
adminAdministratorNein, in LogoControl gibt es aktuell leider keine Möglichkeit Views für unterschiedliche Benutzer zu erstellen.
adminAdministratorNein, das ist derzeit leider nicht möglich. Die automatische Farbanzeige funktioniert nur für Geräte vom Typ Shutter (rot, gelb, grün) oder alle Attribute vom Typ Bit (also 0 oder 1) und ist fest auf 0=rot und 1=grün verdrahtet.
adminAdministratorDas Setzen von Uhrzeiten einer Wochenschaltuhr funktioniert problemlos sowohl über die Weboberfläche als auch über die NetIO App. Aber eins nach dem anderen: Funktioniert denn überhaupt das Setzen der Uhrzeit über die LogoControl-Weboberfläche oder hast du auch schon hier Probleme? Wichtig ist schon mal, dass du nicht einfach 16 eingeben kannst, sondern immer nur in dem Format, wie es dein ValueTextConverter erwartet, also z.B. „16:00“. Uhrzeiten werden in der Logo im hexadezimalen Format gespeichert. Sprich: 16:00 Uhr ist 1600(hex) = 5632(dez). Ohne ValueTextConverter müsstest du sonst 5632 als Wert setzen um 16 Uhr zu erreichen. Beim Setzen über NetIO ist es daher wichtig den ValueText und nicht Value anzuzeigen/zu setzen, da der ValueTextConverter nur auf den ValueText und nicht auf den Value wirkt.
adminAdministratorUm ehrlich zu sein habe ich nicht verstanden was dein Problem nun genau ist. Vielleicht erklärst du noch mal kurz was du eigentlich vor hast. Versuchst du deine eigene Anwendung mit VB.net zu schreiben? Wenn ja, verwendest du die libnodave für die Kommunikation mit der Logo?
Ich musste feststellen das eine Kommunikation mit VM-Adressierung über mehrere Logos hinweg nicht funktioniert.
Was meinst du mit „über mehrere Logos hinweg“? Das die Logos untereinander kommunizieren oder ein externes Tool (LogoControl/Deine eigene VB.NET Anwendung)? Prinzipiell geht beides: Die Logos können untereinander beliebig in ihren VMs lesen/schreiben. Auch mit der libnodave sind mehrere Verbindungen zu unterschiedlichen Logos gleichzeitig möglich.
Logo8 kann nur mit den internen Adressen angesprochen werden.
Was meinst du mit „internen Adressen“? Gibt es auch externe Adressen? Welche anderen Adressen hättest du dir gewünscht, die es deiner Meinung nach nicht gibt?
Deshalb würde ich gerne wissen, was Du verändern musstest um VM-Adressen ansprechen zu können ?
Nichts. Daten an VM-Adressen der Logo können einfach gelesen/geschrieben werden. Verstehe die Frage nicht, aber vermutlich reden wir hier über unterschiedliche Dinge…?!
adminAdministratorSchön, dass du das Problem lösen konntest. Ich habe mal auf der Download-Seite einen Kasten „Alte Versionen“ eingefügt. Die Version 0.4.2 war die letzte, welche noch mit dem alten Format der config.xml funktionierte.
adminAdministratorDoch, das geht auch! Allerdings muss der Http Aufruf einem von logocontrol vorgegebenen Schema entsprechen. Das ganze ist im Artikel REST/JSON Webservice beschrieben. Z.b.
http://logocontrol:8088/rest/devices/8/methods/1
ruft die Methode 1 von Device 8 auf. Der Webservice war ja der eigentliche Grund weshalb ich logocontrol ursprünglich entwickelt habe. -
AutorBeiträge