Antworten
Nov 15, 2018 - 17:53
So z.b
https://www.instructables.com/id/Simp...
Mann könte auch node modul installieren
Musst aber hier im forum suchen user demel hat es beschrieben.
Ansonsten so wie oben und dann die php seiten aus dem automation manager per http aufrufen
https://www.instructables.com/id/Simp...
Mann könte auch node modul installieren
Musst aber hier im forum suchen user demel hat es beschrieben.
Ansonsten so wie oben und dann die php seiten aus dem automation manager per http aufrufen
Nov 16, 2018 - 02:18
Ich nutze dazu IPS2GPIO (Funktionsbeschreibung) das kann aus dem NEO Automation Manager mit einem Aufruf der JSON-RPC API aufgerufen werden. Noch einfacher geht das mit NEO Plugin IP-Symcon dann kann man die Funktionsaufrufe direkt aus dem NEO Automation Manager machen ohne ein extra Script und die JSON-RPC API aufrufen zu müssen.
Nov 16, 2018 - 04:44
Danke für Eure Antworten!
Ich habe mir die Lösungsansätze angeschaut, das scheint mir alles ziemlich aufwendig - ich habe mit Webserver einrichten und JSON API zu wenig Erfahrung bzw. meinen Favoriten: js-Modul in AM importieren habe ich im Forum nicht gefunden.
Ich werde probieren, das auf dem Raspi in Python umzusetzen, damit lassen sich die GPIOs einfach ansteuern. Die anzuzeigenden Werte werde ich dazu mit http://IP des Gateways/command?XC_FNC=GetStates aus dem Gateway holen. Das Python-Script muß ich dann zyklisch ausführen duch einen Eintrag in crontab wie diesen hier für alle 2 Minuten:
*/2 * * * * pi python3 /home/pi/Temperatur_holen.py > /home/pi/Innentemp.log 2>&1
Ich habe mir die Lösungsansätze angeschaut, das scheint mir alles ziemlich aufwendig - ich habe mit Webserver einrichten und JSON API zu wenig Erfahrung bzw. meinen Favoriten: js-Modul in AM importieren habe ich im Forum nicht gefunden.
Ich werde probieren, das auf dem Raspi in Python umzusetzen, damit lassen sich die GPIOs einfach ansteuern. Die anzuzeigenden Werte werde ich dazu mit http://IP des Gateways/command?XC_FNC=GetStates aus dem Gateway holen. Das Python-Script muß ich dann zyklisch ausführen duch einen Eintrag in crontab wie diesen hier für alle 2 Minuten:
*/2 * * * * pi python3 /home/pi/Temperatur_holen.py > /home/pi/Innentemp.log 2>&1
Nov 17, 2018 - 13:02
Mein Python-Script funktioniert: es läuft unter Python 2 + 3 (für Python 3 musste ich die Rpi.GPIO lib nachinstallieren) und zeigt 12° auf dem 7segment!
Das Display wird vom TM1637 angesteuert, der ein serielles Protokoll braucht. Die Kommunikation zum Gateway ist jetzt kein Problem mehr!
# -*- coding: utf-8 -*- import RPi.GPIO as GPIO
import time PinCLK = 23 # Pin 16 = BCM23
PinDIO = 24 # Pin 18 = BCM24
Bitdelay = 0.00001 #0.00001 entspricht 3,6kHz, schneller wird's nicht! GPIO.setmode(GPIO.BCM)
GPIO.setup(PinCLK, GPIO.OUT)
GPIO.setup(PinDIO, GPIO.OUT) def Start():
GPIO.output(PinDIO, GPIO.LOW)
time.sleep(Bitdelay) def Stop():
GPIO.output(PinDIO, GPIO.LOW)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.HIGH)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
GPIO.output(PinDIO, GPIO.HIGH) def Writebyte(Data):
for i in range(8):
GPIO.output(PinCLK, GPIO.LOW)
time.sleep(Bitdelay)
print(i, Data & 1)
if ((Data & 1) == 1):
GPIO.output(PinDIO, GPIO.HIGH)
else:
GPIO.output(PinDIO, GPIO.LOW)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.HIGH)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
Data = Data >> 1
GPIO.output(PinCLK, GPIO.LOW)
GPIO.output(PinDIO, GPIO.HIGH) # Auf ACK warten
GPIO.setup(PinDIO, GPIO.IN)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.HIGH)
time.sleep(Bitdelay)
Ack = GPIO.input(PinDIO)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.LOW)
GPIO.setup(PinDIO, GPIO.OUT)
return Ack Start()
print('Ack = ', Writebyte(0x40))
Stop()
Start()
print('Ack = ', Writebyte(0xC0))
print('Ack = ', Writebyte(0x00))
print('Ack = ', Writebyte(0x06))
print('Ack = ', Writebyte(0x5B))
print('Ack = ', Writebyte(0x63))
Stop()
Start()
print('Ack = ', Writebyte(0x80 + 10))
Stop()
GPIO.cleanup()
Das Display wird vom TM1637 angesteuert, der ein serielles Protokoll braucht. Die Kommunikation zum Gateway ist jetzt kein Problem mehr!
# -*- coding: utf-8 -*- import RPi.GPIO as GPIO
import time PinCLK = 23 # Pin 16 = BCM23
PinDIO = 24 # Pin 18 = BCM24
Bitdelay = 0.00001 #0.00001 entspricht 3,6kHz, schneller wird's nicht! GPIO.setmode(GPIO.BCM)
GPIO.setup(PinCLK, GPIO.OUT)
GPIO.setup(PinDIO, GPIO.OUT) def Start():
GPIO.output(PinDIO, GPIO.LOW)
time.sleep(Bitdelay) def Stop():
GPIO.output(PinDIO, GPIO.LOW)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.HIGH)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
GPIO.output(PinDIO, GPIO.HIGH) def Writebyte(Data):
for i in range(8):
GPIO.output(PinCLK, GPIO.LOW)
time.sleep(Bitdelay)
print(i, Data & 1)
if ((Data & 1) == 1):
GPIO.output(PinDIO, GPIO.HIGH)
else:
GPIO.output(PinDIO, GPIO.LOW)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.HIGH)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
Data = Data >> 1
GPIO.output(PinCLK, GPIO.LOW)
GPIO.output(PinDIO, GPIO.HIGH) # Auf ACK warten
GPIO.setup(PinDIO, GPIO.IN)
time.sleep(Bitdelay)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.HIGH)
time.sleep(Bitdelay)
Ack = GPIO.input(PinDIO)
time.sleep(Bitdelay)
GPIO.output(PinCLK, GPIO.LOW)
GPIO.setup(PinDIO, GPIO.OUT)
return Ack Start()
print('Ack = ', Writebyte(0x40))
Stop()
Start()
print('Ack = ', Writebyte(0xC0))
print('Ack = ', Writebyte(0x00))
print('Ack = ', Writebyte(0x06))
print('Ack = ', Writebyte(0x5B))
print('Ack = ', Writebyte(0x63))
Stop()
Start()
print('Ack = ', Writebyte(0x80 + 10))
Stop()
GPIO.cleanup()
Neuen Kommentar hinzufügen