Ich bastle gerade mit einem Rasberry PI mit angeschlossenen 1-Wire-Temperatursensoren. Ausser dem RASP, ein paar 18B20 und einem 4,7 k Widerstand ist hierzu nichts weiter notwendig, wenn man die Leitungslängen kurz hält. Die Daten lese ich direkt mit PHP aus dem RASP-1Wire-Filesystem aus und schreibe/logge sie dort mit einer globalen Variable (siehe PHP-Script).
<?php
// 1-Wire Adresse des auszulesenden Sensors
$Sensor = "28-000001c78cdc";
// Zugriff auf das 1-Wire Filesystem des PI´s
// Erwartetes Ergebis
// 49 01 4b 46 7f ff 07 10 f6 : crc=f6 YES
// 49 01 4b 46 7f ff 07 10 f6 t=20562
$temperatur = implode('', file("/sys/bus/w1/devices/".$Sensor."/w1_slave"));
// extrahieren des Temperaturwertes: erwartetes Ergebis: 20562
$temperatur = substr($temperatur, strpos($temperatur, "t=") + 2);
// Umrechnung in eine Kommazahl mit zei Stellen erwartetes Ergebis: 20.56
$temperatur =round(($temperatur/1000),2);
// Schreiben in ein globale Variable
SetValueFloat(35970 /*[GPIO\Sensor]*/,$temperatur);
// wie kriegt man am besten diese globale Variable an in zentrales IPS-System übermittelt ?
// über sockets, Fileaustausch, über ....
?>
Nun möchte ich diesen Messwert gerne auch in meinem zentralen IPS-System (Windows) zur Verfügung haben. Meine Frage ist nun, was wäre die geschickteste Lösung hierfür? Sockets, gemeinsames Filssystem, Messages, oder …
Die Temperaturen stammen von verschiedenen Heizungspunkten (Kessel, Speicher, Vorlauf, Ruecklauf, Zirkulation …), so dass die Messintervalle nicht unter 60 Sekunden liegen muessen.
Lustig… bastel auch grad mit einem RPI rum, der an IPS Senden soll
Ich habe das zuerst auch mit einem Apache auf dem RPI gelöst , der per HTTP Request daten sendet.
War mir aber irgendwie zu ‚unschön‘.
Gelöst jetzt so:
Auf dem Raspi läuft ein script (bash) zb. mittels ctrontab.
in IPS habe ich einen ServerSocket und eine Registervariable mit Script.
Der Raspi sendet mittels des scripts die Daten dann direkt als TCP-Stream an IPS.
echo "IRGENDWAS was ich sendne will" > /dev/tcp/[IP-ADRESSE IPS RECHNER]/[PORT VOM SERVERSOCKET]
Hallo,
kannst du mir das etwas genauer erklären was du alles im Raspberry und im Windows angelegt hast?
Habe das mit dem JSON versucht aber irgendwie schnall ich das nicht und in der Dokumentation ist das auch nicht wirklich verständlich beschrieben.
Tücke ist nur, dass beim PI der Port 3777 ist und beim Win-PC noch irgendwas anderes (bei mir 82 (irgendwie von „früher“)).
Folgendes Beispiel liest eine Variable „vom ANDEREN IPS“:
$rpc = new JSONRPC("http://user:password@127.0.0.1:82/api/"); //Deine Daten und IP und PORT
echo $rpc->GetValueFormatted(58383); //hier muss natürlich die Quell-IPS-ID stehen
also bei mir läuft auf dem Raspi eigentlich: nix außer ein paar scripten etc.
auf dem IPS Server (Windows) habe ich einen ServerSocket eingerichtet und dazu eine Registervariable und ein Script.
Alles natürlich verbundne per standard IPS Konfiguration
Auf dem Raspberry starte ich halt - vonwoauchimmer (bash, script, php script etc) den Shell befehl:
z.B:
echo „KOMMANDO ZURÜCK“ > /dev/tcp/[IP-ADRESSE IPS RECHNER]/[PORT VOM SERVERSOCKET]
das Registervarialbenscript wird darauf hin beim windows IPS Rechner gestartet und empfängt „KOMMANDO ZURÜCK“