Jump to content

gelöst [PHP] Temperatur-Bricklet auslesen mit PHP: $ipcon->connect stirbt


Recommended Posts

Hallo alle zusammen,

 

ich bin am verzweifeln, verwende die PHP.exe um unter Windows das simple Minimalbeispiel zum TemperatureBricklet zum laufen zu bekommen.

 

Habe schon verschiedene PHP-Versionen (5.4.13, 5.4.20) unter Win2012 und Win8 ausprobiert. Die Bindings sind nicht als PEAR-Paket installiert sondern gem. Anleitung lokal kopiert (alles in einem Pfad).

 

Der Brick und das Bricklet sind vom BrickV aus ansprechbar und auslesbar.

 

Wenn ich dann aber das PHP-Skript von der Eingabeaufforderung mittels

php.exe x.php

starte, stirbt das Skript. Durch Einbau verschiedener Debug-Punkte lässt sich das auf den $ipcon->connect zurückführen. Der wirft allerdings keinen Fehler, selbst my try...catch nichts erkennbar.

 

Hat jemand eine Idee, wo ich weitersuchen kann? Hier das Skript (kommt Euch bestimmt bekannt vor)...

 

<?php

require_once('IPConnection.php');
require_once('BrickletTemperature.php');

use Tinkerforge\IPConnection;
use Tinkerforge\BrickletTemperature;

$host = '192.168.0.10';
$port = 4223;
$uid = '8jm'; // Change to your UID

$ipcon = new IPConnection(); // Create IP connection
$t = new BrickletTemperature($uid, $ipcon); // Create device object

$ipcon->connect($host, $port); // Connect to brickd
// Don't use device before ipcon is connected

// Get current temperature (unit is °C/100)
$temperature = $t->getTemperature() / 100.0;

echo "Temperature: $temperature °C\n";

echo "Press key to exit\n";
fgetc(fopen('php://stdin', 'r'));
$ipcon->disconnect();

?>

 

Viele Grüße vom frustrierten Andreas

Link zu diesem Kommentar
Share on other sites

Moin Andreas,

 

nur um sicher zu sein: Du sprichst das Bricklet über eine Ethernet Master Extension an, also nicht an Deinem Rechner über USB steckend, ja? Kommst Du denn auf das MasterBrick dort wenigstens (da gibt es ja auch einen Temperaturwert zum Auslesen...taugt nix, aber zeigt, ob die Config rennt)...

 

Cu

Strolch

 

Link zu diesem Kommentar
Share on other sites

Hallo Strolch,

 

ja, auf TF-HW-Seite habe ich ein Master Brick mit ner Ethernet-Extension, via PoE versorgt, mit nem Temperature-Bricklet dran.

 

Die Bindings sind V2.0.10, HW gem. Update-Check im BrickV up to date.

 

Ich habe nun einfach mal die ExampleStackStatus.php als Grundlage genommen, die stirbt ganz genauso an der $ipcon->connect

 

<?php

require_once('IPConnection.php');
require_once('BrickMaster.php');

use Tinkerforge\IPConnection;
use Tinkerforge\BrickMaster;

$host = '192.168.0.10';
$port = 4223;
$uid = '6xhvDs'; // Change to your UID

$ipcon = new IPConnection(); // Create IP connection
$master = new BrickMaster($uid, $ipcon); // Create device object

$ipcon->connect($host, $port); // Connect to brickd
// Don't use device before ipcon is connected

// Get voltage and current from stack (in mV/mA)
$voltage = $master->getStackVoltage();
$current = $master->getStackCurrent();

echo "Stack Voltage: " . $voltage / 1000.0 . " V\n";
echo "Stack Current: " . $current / 1000.0 . " A\n";

echo "Press key to exit\n";
fgetc(fopen('php://stdin', 'r'));
$ipcon->disconnect();

?>

 

Habe schon überlegt, ob die Windows-Firewall im Weg steht? Muss ich Regeln für ausgehenden oder eingehenden Traffic einrichten?

 

Vielen Dank für Deine Unterstützung!

Gruß Andreas

Link zu diesem Kommentar
Share on other sites

Hallo Jakob,

 

über USB ist das alles kein Problem.

 

Als Schnellschuss ohne viel Nachdenken habe ich auch schon Firewall-Regeln eingerichtet, incoming und outgoing für php.exe alles erlauben... und dann wieder über Ethernet probiert - hat auch nicht geholfen. ???

 

Ich bin ratlos...  :-\

Gruß Andreas

 

Link zu diesem Kommentar
Share on other sites

Moin,

 

ich muss noch weiter dumme Fragen stellen - was auch daran liegt, dass ich das Ethernet-Modul noch nicht habe :-[ :

 

[*]Also lokal per USB rennt das Ding, ja? d.h. der Dienst unter Windows läuft?

[*]Das Ethernet-Modul musst Du ja konfigurieren bevor Du es das erste Mal ins Ethernet hängst - da stimmen auch Gateway, Netmask usw?

[*]wenn Du ein Telnet auf den Host:Port aufmachst, geht der durch oder kommt da "no answer" schnell zurück?

 

Cu

Strolch

 

Link zu diesem Kommentar
Share on other sites

Hallo Andreas,

 

eine andere Idee die ich noch hätte wäre, den Stack über USB mit Strom zu versorgen und dann das ganze nochmal zu versuchen.

Ansonsten ist es mir mal passiert, dass ich die falsche IP-Adresse eingegeben habe.

Ich selber lasse bei mir auch Tinkerforge über PHP laufen, allerdings nutze ich XAMPP unter Windows und da konnte ich meine WIFI-Extension allerdings ohne Probleme direkt über PHP ansprechen.

 

Gruß,

Jakob

Link zu diesem Kommentar
Share on other sites

Hallo Andreas,

 

ich habe gerade nochmal ein bisschen hier im Forum rungeschaut und bin durch Zufall auf einen alten Post gestoßen in dem es um eine änliche Problematik ging.

http://www.tinkerunity.org/forum/index.php/topic,519.msg2830.html#msg2830

Daher kam mir jetzt einfach mal die ganz einfache Idee, schalte mal deine Firewall komplett aus und versuche es dann nochmal.

In dem Beitrag ging es auch um das Freischalten von Ports unter Windows.

Link zum freischalten eines Ports unter Windows: http://windows.microsoft.com/de-at/windows7/open-a-port-in-windows-firewall

Link zu diesem Kommentar
Share on other sites

Hallo Jakob,

 

vielen Dank für Deine Arbeit... :)

 

Also, netzwerkseitig erreiche ich die Ethernet-Extension (ich sehe am Switch den Port "up" mit PoE-Versorgung; ich sehe auf dem DHCP, dass der Lease geholt wurde; ich bekomme einen Ping zurück, sowohl über DNS-Auflösung als auch über IP-Adresse).

 

Habe gerade mal die Firewall KOMPLETT ausgeschaltet - läuft auch weiterhin nicht. Vielleicht ist die Extension fehlerhaft? Das habe ich mich noch nicht gefragt, ich werde gleich mal meine zweite Ethernet-Extension auspacken...

 

Gruß Andreas

Link zu diesem Kommentar
Share on other sites

Hallo Strolch,

 

gibt keine Dummen Fragen... erst recht nicht, wenn Du sie stellst, um mir zu helfen!!! ;)

 

[*]lokal per USB rennt das Ding und der Dienst unter Windows läuft!

[*]TCP/IP-Config kommt vom DHCP, mit den selben Gateway-, Netmask-, ...-Einstellungen wie mein ganzer LAN-Zoo

[*]Telnet auf den Host:Port geht durch, ich bekomme kein "no answer" oder sowas - Allerdings: ich bekomme keine Meldung in Klartext, sowas wie ne MOTD oder so gibts offenbar nicht. Bin aber auch mit dem Protokoll, dass das gesprochen wird, nicht vertraut - habe angenommen, dass das okay ist (?)

 

Gruß Andreas

Link zu diesem Kommentar
Share on other sites

Öhm, hallo nochmal allen freundlichen Mithelfern!

 

Mir ist gerade aufgefallen, dass ich mich nun ein wenig verrannt habe. Ich habe aus den Augen verloren, dass der BrickV ja kontinuierlich OHNE PROBLEME Kontakt mit dem Brick, der Extension und dem Bricklet bekommt.

 

Das Problem dürfte damit eigentlich nicht an Firewall, TF-Hardware, Netzwerk o.ä. liegen. Ich muss das Problem im installierten PHP und den Bindings suchen...

 

Stimmt ihr mir da zu? - Werde mit diesem neuen Gedanken nochmal einsteigen.

Gruß Andreas

Link zu diesem Kommentar
Share on other sites

Hallo Andreas,

 

wenn der BrickV ohne Probleme alles anzeigt und eine Verbindung hat, dann muss es an deinem Programm liegen.

Was PHP angeht kann ich dir helfen, allerdings kenne ich mich mit der Windows-.exe-Geschichte nicht aus.

Ich kann mal versuchen dein Programm über die WIFI-Extension laufen zu lassen, wenn ich wieder zu Hause bin.

Wo bekomme ich denn diese PHP.exe her?

 

Gruß,

Jakob

Link zu diesem Kommentar
Share on other sites

Hallo Jakob,

 

das ist sehr nett!!! Die php.exe ist Bestandteil der Windows-Distribution von PHP, wenn Du das Archiv runterlädst und in ein Verzeichnis entpackst, findest Du darin die php.exe. Von der Kommandozeile aufgerufen, kann sie ein Skript ausführen mit

D:\pfad\zu\php\php.exe X:\pfad\zum\skript.php

 

Gruß Andreas

Link zu diesem Kommentar
Share on other sites

Das Problem ist, dass die Sockets Extension standardmäßig nicht aktiviert ist in der Windows-Distribution von PHP, die es auf der PHP Webseite zum herunterladen gibt. Du musst in der php.ini folgende Zeile einfügen:

 

extension=ext/php_sockets.dll

 

Mir war bis eben nicht bekannt, dass die Socket Funktionen eine Extension sind. Daher ist das bisher noch nicht dokumentiert, ich werde das verbessern.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...