Geschrieben October 7, 2021 at 07:447. Okt 2021 Hallo Zusammen, ich habe mir die Wetterstation mit Weather Bricklet, Master Brick und Wifi Extension zugelegt. Alles funktioniert einwandfrei mit dem Brick Viewer ĂŒber USB und direkt ĂŒber TCP/IP. Nur habe ich mir wohl im Vorfeld meiner Kaufentscheidung die Prinzipien der Schnittstellenabstraktion nicht genau genug angeschaut - zur Sicherheit, folgen Fragen: Bietet die Wifi-Extension tatsĂ€chlich selbst keine REST-API ĂŒber HTTP, obwohl ja ein Web-Server drauf lĂ€uft? Und kann ein Stapel mit Wifi-Extension nur dann als MQTT-Publisher agieren, wenn auf einem weiteren/anderen Controller mit dem MQTT-API-Binding das Tinkerforge Protocol gewrapt wird? Oder gibt's evtl. eine "fertige" Firmwarealternative, die das kann, oder vilt. irgendein Firmware-Hack? Mir scheint das so naheliegend...!?!  GruĂ Klaus
Geschrieben October 26, 2021 at 06:4626. Okt 2021 Autor Hallo liebes Forum und Supportteam, ich weiĂ nicht, ob ich zu ungeduldig bin und möchte eigentlich nicht als NervensĂ€ge in die ThinkerForge-Annalen eingehen... Aber ich frage mich tatsĂ€chlich, ob ich eine etwas zu naive Frage gestellt habe, oder ein Thema aufgegriffen habe, das auĂer mir wirklich keinen interressiert? Um meinen Frieden mit der Sache zu schlieĂen, wĂŒrde ich mich ĂŒber irgendein Feedback freuen... đł egal, ob von einem anderen AnfĂ€nger, der mein Interesse nachvollziehen kann und mir seine EinschĂ€tzung mitteilt, oder von einem Experten, der mir mit einem kurzen Satz meine Illusionen nimmt. Ich hoffe ich habe jetzt nicht die Etikette des Forums verletzt đš  Freundliche GrĂŒĂe Klaus
Geschrieben October 26, 2021 at 08:3626. Okt 2021 Hallo Klaus, die WIFI Extension dient nur dazu, einen Stapel aus Bricks und Bricklets per WLAN erreichbar zu machen. Wenn Du die Daten der Wetterstation per MQTT an einen Broker senden möchtest, muss irgendwo in Deinem Netzwerk ein StĂŒck Software laufen, welche dass ĂŒbernimmt. GrĂŒĂe Chris
Geschrieben October 26, 2021 at 12:1826. Okt 2021 Autor Danke Chris, fĂŒr die prompte Antwort! ...und der Web-Server, der auf der WIFI-Extension lĂ€uft, kann tatsĂ€chlich nur die Angaben zu seinem Netzwerkstatus als HTML liefern?  GruĂ Klaus
Geschrieben October 26, 2021 at 12:4626. Okt 2021 Hallo Klaus, ja, bzw. halt auch die Einstellungen Ă€nder. Mehr aber nicht. Ich glaube der Aufwand, die Firmware aufzubohren, ist nicht ohne. Hast Du nen Pi oder Server in Deinem Netzwerk laufen? Dann ist nen Python-Script, bzw. direkt MQTT ja schnell zusammengeschrieben. GrĂŒĂe Chris
Geschrieben October 27, 2021 at 10:3227. Okt 2021 Autor Hallo Chris, ich hab ne alte Synology laufen und meine bescheidene Hausautomation (haupts. ein Arduino um ein paar Relais zu schalten) dezentral organisiert. D.h. alles was es zu steuern gibt, ist per REST ĂŒber http erreichbar und es braucht somit nicht unbedingt einen Server. Alles was zeitgesteuert passieren soll, macht der cron-job der Synology mit einem PHP-Script. Ich hatte jetzt die Absicht das PHP-Binding ohne Installation auf der Synology zu verwenden, weil ich es so verstanden habe, dass der Zugriff auf das Masterbrick ĂŒber die WIFI-Extension keinen Brick Deamon erfordert - mit der Installation dessen auf der Disk Station wollte ich mich eher nicht auseinander setzen. Das hat leider auf Anhieb nicht geklappt - hab aber auch noch nicht viel Zeit und Aufmerksamkeit investiert. Â GruĂ Klaus
Geschrieben October 27, 2021 at 11:3627. Okt 2021 Hallo Klaus, was meldet denn das PHP-Script? Ich habe gerade keine WIFI Extension zur Hand, um das zu testen. GrĂŒĂe Chris
Geschrieben October 27, 2021 at 14:2127. Okt 2021 Autor Hallo Chris, erst mal vielen Dank fĂŒr Dein Interesse und ich freu mich, dass Du Dich meinem Problem annimmst. Das PHP-Script meldet ĂŒberhaupt nichts. Der Browser lĂ€dt, und lĂ€dt, und lĂ€dt... Ich vermute, dass beim kopieren der Bindings noch was zu beachten ist, das ich ĂŒbersehen habe (wenngleich man da eigentlich nicht viel falsch machen kann). Aber so sehr ich mir eine Antwort auf meine ursprĂŒngliche Frage hier im Forum gewĂŒnscht habe, so wenig Zeit habe ich seither selbst in meine Test gesteckt đ (hatte irgendwie die Hoffnung, dass es doch per REST, ohne ein "StĂŒck Software" auĂerhalb geht). Sobald ich wieder was daran gemacht habe, werde ich es berichten - und mich freuen, wenn es dann auch noch Dein Interesse weckt đ  GruĂ Klaus
Geschrieben November 2, 2021 at 21:362. Nov 2021 Autor Nachdem ich ExampleCallback.php und den Tinkerforge-Ordner in ein Verzeichnis auf dem Webserver kopiert habe und IP-Adresse, Port und UID gesetzt habe, erhalte ich folgenden Fehler beim Aufruf von ExampleCallback.php: Fatal error: Uncaught exception 'Exception' with message 'Could not connect socket: Connection timed out' in /volume1/web/WeatherStation/Tinkerforge/IPConnection.php:655 Stack trace: #0 /volume1/web/WeatherStation/Tinkerforge/IPConnection.php(912): Tinkerforge\ExtensionSocket->__construct('192.168.178.39', 4223) #1 /volume1/web/WeatherStation/ExampleCallback.php(77): Tinkerforge\IPConnection->connect('192.168.178.39', 4223) #2 {main} thrown in /volume1/web/WeatherStation/Tinkerforge/IPConnection.php on line 655 Um den Timeout zu ĂŒberwinden, versuche ich den Socket in einer Schleife mehrfach zu verbinden und erhalte dann folgenden Fehler: Warning: socket_last_error() expects parameter 1 to be resource, boolean given in /volume1/web/WeatherStation/Tinkerforge/IPConnection.php on line 1154 Fatal error: Uncaught exception 'Tinkerforge\NotConnectedException' with message 'Could not send request: Success' in /volume1/web/WeatherStation/Tinkerforge/IPConnection.php:1153 Stack trace: #0 /volume1/web/WeatherStation/Tinkerforge/IPConnection.php(464): Tinkerforge\IPConnection->send('Ćâą???Ăż(?') #1 /volume1/web/WeatherStation/Tinkerforge/IPConnection.php(536): Tinkerforge\Device->sendRequest(255, '', 33) #2 /volume1/web/WeatherStation/Tinkerforge/BrickletOutdoorWeather.php(389): Tinkerforge\Device->checkValidity() #3 /volume1/web/WeatherStation/ExampleCallback.php(81): Tinkerforge\BrickletOutdoorWeather->setStationCallbackConfiguration(true) #4 {main} thrown in /volume1/web/WeatherStation/Tinkerforge/IPConnection.php on line 1153 Auf meiner DiskStation lĂ€uft PHP Version 5.3.29. Hat jemand einen Tipp? Oder kannst Du mal einen Blick darauf werfen, Chris?  Vielen Dank vorab!  GruĂ Klaus Â
Geschrieben November 3, 2021 at 12:143. Nov 2021 Welche Version der PHP Bindings verwendest du? Die Zeilennummern passen nicht zur aktuellen Version 2.1.29. Teste mal bitte mit 2.1.29. Ich kann auf die Schnelle kein PHP 5.3 auftreiben. Ich habe das Problem versucht in einem Docker Container mit PHP 5.5.38 nachzustellen, aber es funktioniert hier. Dein eigentliches Problem ist, dass die WIFI Extension nicht unter 192.168.178.39 erreichbar zu sein scheint. Kannst du den Stapel unter 192.168.178.39 mit Brick Viewer erreichen? Den zweiten Fehler den du dann siehst kann ich nicht nachvollziehen. Es scheint keine Verbindung zu bestehen dennoch versuchen die Bindings eine Nachricht auf einen geschlossenen Socket zu senden. Eigentlich sollte Tinkerforge\Device->sendRequest in diesem Fall Tinkerforge\IPConnection->send gar nicht aufrufen.
Geschrieben November 3, 2021 at 14:003. Nov 2021 Autor Hallo photron, Danke fĂŒr Deine Hinweise. Die WIFi-Extension ist ĂŒber die IP erreichtbar - sowohl deren Web-Browser, als auch mit dem Brick-Viewer. Die Version des Bindings kontrolliere ich nochmal - allerdings ist der Download erst 2-3 Wochen alt. Zu ĂŒberlegen wĂ€re vielleicht auch, die PHP-Version auf der Disk Station upzudaten - allerdings weiĂ ich nicht, ob das auf meiner alten DS ohen Weiteres klappt. Alternativ wĂŒrde ich dann mal PHP unter Windows verwenden. Ich habe den Eindruck, dass die WIFI-Extension sehr trĂ€ge reagiert, wenn man auf deren Web-Browser zugreift (wobei mit dem Brick-Viewer alles recht zackig geht), deshalb hatte ich fĂŒr möglich gehalten, dass die Connection in einen Timeout lĂ€uft und habe in IPConnection.php mit einer Schleife einen "eigenen" Timout realisiert und mache mehrere Verbindungsversuche nacheinander. Vielleicht habe ich da einen Fehler eingebaut, so dass der Constructor ohne Fehler zurĂŒckkehrt, obwohl keine Verbindung hergestellt werde konnte - und daher rĂŒhrt dann der zweite Fehler...!? Sorry, war etwas spĂ€t gestern...đ  GruĂ Klaus
Geschrieben November 3, 2021 at 15:243. Nov 2021 1 hour ago, kstaehle said: Vielleicht habe ich da einen Fehler eingebaut, so dass der Constructor ohne Fehler zurĂŒckkehrt, obwohl keine Verbindung hergestellt werde konnte - und daher rĂŒhrt dann der zweite Fehler...!? Sorry, war etwas spĂ€t gestern...đ Das erklĂ€rt einiges... Am besten machst du deine Schleife in deinem Code der IPConnection.connect() aufruft anstatt IPConnection.php zu verĂ€ndern. Aber eigentlich sollte das gar nicht nötig sein. Bei einem "Connection timed out" Fehler wĂŒrde ich erwarten, dass die IP Adresse die du angegeben hast ĂŒberhaupt nicht erreichbar ist, z.B. weil sie falsch ist oder ein Routing-Problem vorliegt, so dass diese von deiner Disk Station aus gar nicht erreichbar ist. Kannst du von der Disk Station aus 192.168.178.39 per ping erreichen? Oder ist auf der Disk Station vielleicht eine Firewall eingerichtet die ausgehenden Netzwerkverkehr blockiert? Oder ist das PHP auf der Disk Station beschrĂ€nkt und darf keine Netzwerkverbindung aufbauen?
Geschrieben November 4, 2021 at 18:404. Nov 2021 Autor Am 3.11.2021 um 16:24 schrieb photron: Kannst du von der Disk Station aus 192.168.178.39 per ping erreichen? Oder ist auf der Disk Station vielleicht eine Firewall eingerichtet die ausgehenden Netzwerkverkehr blockiert? Oder ist das PHP auf der Disk Station beschrĂ€nkt und darf keine Netzwerkverbindung aufbauen? Also ein ping funtioniert von der Disk Station aus, auf 192.168.178.39 und laut phpinfo ist Sockets Support enabled. Laut Dateiname des ZIP-Files verwende ich die Bindings in der Version 2.1.29. Was ich aber ĂŒberhaupt nicht verstehe ist, dass der Aufruf von ExampleCallback.php hĂ€ufig in einem endlos ladenden Browser-Fenster endet. Ich muss dann teilweise mehrere Tabs öffnen, bis mit der URL dann der o.g. Fehler angezeigt wird. Wie kann ich denn testen, ob die Disk Station grundsĂ€tzlich Netzwerkverbindungen aufbauen kann/darf?
Geschrieben November 5, 2021 at 15:145. Nov 2021 Die PHP Beispiele sind nicht als CGI-Programme gedacht, sondern als Kommandozeilen-Programme. Im CGI Modus darf ein PHP Programm maximal 30 Sekunden laufen, ansonsten wird es abgebrochen. Alle Callback Beispiele laufen aber bis du sie per Tastendruck abbrichst. Daher ist es nicht verwunderlich, wenn du Probleme mit einem Callback Beispiel im CGI Modus hast. FĂŒr den CGI Modus sind Callbacks ungeeignet, weil du nicht auf einen Callback warten kannst/willst. Dort solltest du Getter verwenden. Also solltest du dir die Simple Beispiele ansehen. Dort musst du dann diese Zeile entfernen, die das Beispiel davon abhĂ€lt sich zu beenden bevor du das mit einem Tastendruck gestattest. fgetc(fopen('php://stdin', 'r'));
Geschrieben November 8, 2021 at 09:518. Nov 2021 Hallo Klaus, sorry fĂŒr die spĂ€te Antwort. War kurzfristig mal ein paar Tage im Urlaub đ. Generell halte ich PHP fĂŒr sowas ggfs. fĂŒr nicht so schön/ungeeignet. Du kannst auf der DS ja auch Python installieren. Das finde ich fĂŒr solche Sachen einfach praxistauglicher. Kann Dir da auch gerne bei helfen. GrĂŒĂe Chris
Geschrieben November 9, 2021 at 19:139. Nov 2021 Autor Am 5.11.2021 um 16:14 schrieb photron: Im CGI Modus darf ein PHP Programm maximal 30 Sekunden laufen, ansonsten wird es abgebrochen. Das erklĂ€rt Einiges... đ Danke photron!! Da bin ich echt froh, dass ich bei den AnfĂ€ngerfragen gepostet habe... denn obwohl ich - wie durch diesen Fehler offensichtlich wird - recht wenig Ăbung mitbringe, hĂ€tte ich gleich skeptisch sein sollen, weil mir ja bewusst war, dass ich die Werte von der Wetterstation pollen will und das nicht wirklich zu den registrierten Callbacks passt - das hĂ€tte mir schon auch merkwĂŒrdig vorkommen sollen. Und wie die RĂŒckgaben des Callbacks, den Weg in ein Browserfenster finden sollen, habe ich mit nicht klar gemacht. Auf alle FĂ€lle funktioniert ExampleCallback.php von der Komandozeile der Disk Station aus und jetzt auch ein kleines CGI-Skript im Browserfenster mit getStationData(). Am 8.11.2021 um 10:51 schrieb Backdraft007: Generell halte ich PHP fĂŒr sowas ggfs. fĂŒr nicht so schön/ungeeignet. Du kannst auf der DS ja auch Python installieren. Das finde ich fĂŒr solche Sachen einfach praxistauglicher. Kann Dir da auch gerne bei helfen. ...und Danke fĂŒr das freundliche Angebot, Chris! Ich möchte aber vorerst bei meinem PHP-Script bleiben, weil wie ich weiter oben schon beschrieben habe, lĂ€uft da bei mir schon was, das von verschiedenen Stellen, per Cron-Job gesteuert,  Daten einsammelt und in eine Datenbank schreibt. Dort möchte ich die von der Wetterstation gepollten Daten einfĂŒgen. Herzlichen Dank euch beiden!  Am 5.11.2021 um 16:14 schrieb photron: Also solltest du dir die Simple Beispiele ansehen. Vieleicht noch ein Support-Tipp aus AnfĂ€ngerperspektive: "Simple Beispiele" habe ich nicht gefunden - auĂer es ist damit die Beschreibung der API-Grundfunktionen gemeint. Da wĂŒrde dem AnfĂ€nger dann tatsĂ€chlich ein vorgefertigtes Beispiel helfen, das dem ExampleCallback.php eine Pollingvariante gegenĂŒber stellt (vlt. mit einem kurzen Hinweis auf die CGI-CLI-Problematik?) - nur so als Anmerkung... Viele GrĂŒĂe Klaus
Geschrieben November 9, 2021 at 19:339. Nov 2021 16 minutes ago, kstaehle said: "Simple Beispiele" habe ich nicht gefunden Stimmt, beim Outdoor Weather Bricklet gibt es nur das Callback Beispiel. Normalerweise gibt es auch immer ein Simple Beispiel das mit einem Getter Aufruf arbeitet. Zum Beispiel, das hier fĂŒr das Ambient Light Bricklet 3.0: https://www.tinkerforge.com/de/doc/Software/Bricklets/AmbientLightV3_Bricklet_PHP.html#simple So ein Beispiel fehlt fĂŒr das Outdoor Weather Bricklet. Ich nehme das mal auf die TODO Liste auf.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.