RasperyPi + LCD + CSM / RS485 Platine = "FHEM-Zentrale"

Begonnen von Dirk, 15 Mai 2013, 21:29:16

Vorheriges Thema - Nächstes Thema

Puschel74

Hallo,

naja, man lernt nie aus ;-)

Das Skript sollte natürlich erst mit
chmod a+rx show_images.sh
ausführbar gemacht werden ;-)

Aber schon ok. Nur so lernt man mitdenken.
Das verlange ich von meinen Lehrlingen ja auch immer ;-)

Und nun nochmal eine dumme Frage.
Das Datum und die Uhrzeit bekommt man mit einem einfachen cls im Skript anscheinend nicht weg.
Zumindest bleibt bei mir Datum und Uhrzeit stehen und die Grafiken von PeMue überlappen dadurch ab und zu mal.
So und nun kommts ^^
Wie bekomme ich
a) Datum und Uhrzeit am anfang eines Skripts weg und
b) am Ende eines Skripts wieder auf das LCD?

Danke für Eure Geduld mit mir.

Grüße

P.S.: @PeMue Dein Skript bzw. deine wunderbare Zusammenfassung habe ich leider erst jetzt gesehen da sich das mit unseren beiden Beiträgen überschnitten hat und die Forensoftware eine neue Seite mit meinem Beitrag erstellt hat.
Ich werd gleich mal wiringPi nachinstallieren (sicher ist sicher).
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

PeMue

Hallo Puschel,

ich bin gerade nicht an meinem Privatrechner, aber in der Doku müsste etwas mit time (für Start der Uhrzeit/Datum) bzw. timestop (für das Ende) stehen. Einfach über den client schicken und freuen ...

Das mit dem ausführbar machen ist natürlich richtig, ich werde das mal mit reinschreiben ...

Gruß PeMue

PS: Wenn Du Dirk's image hast, sollte wiringPi schon installiert sein. Einfach mal auf Gordon's Seite gehen und die Befehle zum Initialisieren raussuchen und testen.
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Dirk

ZitatDas Datum und die Uhrzeit bekommt man mit einem einfachen cls im Skript anscheinend nicht weg.
Zumindest bleibt bei mir Datum und Uhrzeit stehen und die Grafiken von PeMue überlappen dadurch ab und zu mal.
So und nun kommts ^^
Wie bekomme ich
a) Datum und Uhrzeit am anfang eines Skripts weg und
b) am Ende eines Skripts wieder auf das LCD?
Datum und Uhrzeit werden vom Daemon, sofern aktiviert, selbstständig aktualisiert.
Siehe Befehlsübersicht.

/opt/rpiLcd/Daemon/client 1234 stopDate
/opt/rpiLcd/Daemon/client 1234 stopTime
Stoppt die Aktualisierung und verhindert das Wiedererscheinen der Zeit nach einem cls.

/opt/rpiLcd/Daemon/client 1234 date,x,y,fontNum,centuryStartet z.B. das Datum wieder.

Gruß
Dirk

Puschel74

Hallo,

danke ihr 2 für den richtigen Schubs.

@PeMue
Ich werd mich mal schlau machen wg. wiringPi
Dank deiner Erklärung sollte das ja easy sein.

@Dirk (auch auch PeMue)
Ich werd mir die Doku mal ausdrucken und unters Kopfkissen legen (und verinnerlichen).

Dann erübrigen sich meine unnötigen Fragen zum Glück von selbst.

Danke nochmal ihr 2.

Grüße

Edith:
gpio -v
gpio readall

liefert brav Ausgaben.
Also sollte wirinPi installiert sein und funktionieren.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

PeMue

Hallo,

und hier sind die Bilder mit dem Tankinhalt (in 20 % Schritten).

(siehe Anhang / see attachement)

Einfach mal ausprobieren und Rückmeldung an mich ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Puschel74

Hallo,

ich mal wieder :-)

Auf der fhem-Kommandozeile funktioniert ein
set rpiLCD backlight 255
bzw.
set rpiLCD backlight 1

Bei ersterem wird die Hintergrundbeleuchtung erwartungsgemäss heller und bei zweiterem dunkler.
Ein
set rpiLCD backlight 0
bringt mir ein
ZitatUnknown argument 0, choose one of 1:2:3:4

Und wie ich einen Text über fhem auf das Display bekomme habe ich immer noch nicht zusammen bekommen.
Ok. Letzteres liegt sicher an mir ^^

Aber egal was ich versuche erhalte ich im LogFile immer sowas:
Zitat2013.08.10 21:24:45 1: backlight
2013.08.10 21:24:45 1: cls
2013.08.10 21:24:45 1: led
2013.08.10 21:24:45 1: text
2013.08.10 21:24:59 1: backlight
2013.08.10 21:24:59 1: cls
2013.08.10 21:24:59 1: led
2013.08.10 21:24:59 1: text
2013.08.10 21:25:16 1: backlight
2013.08.10 21:25:16 1: cls
2013.08.10 21:25:16 1: led
2013.08.10 21:25:16 1: text

Für sachdienliche Hinweise bin ich mal wie immer dankbar.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

PeMue

Hallo Puschel,

das mit dem Backlight 0 ist vermutlich ein Fehler im fhem Modul. Allerdings habe ich noch nicht herausbekommen, warum das so ist.
Auf der Konsole geht mit
/opt/rpiLcdDaemon/client 1234 setBacklight,0bei Dir das Licht ganz aus ...
Interessanterweise kann der daemon auch nur bis 254 hochzählen.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Dirk

Zitatdas mit dem Backlight 0 ist vermutlich ein Fehler im fhem Modul.
Ja, kann man vermutlich so sehen :)
Ich bin wohl nicht auf die Idee gekommen dass man die BG-Beleuchtung ausschalten möchte.

Der Daemon kann es. Ich fixe das noch.

Ich habe auch grade gesehen, dass es vom Modul aus ein "set ... text" gibt, aber dass dieses vom Modul gar nicht verarbeitet wird.
Also bekommt man mit reinen FHEM-Mitteln derzeit keinen text auf das Display. Dazu muss mann Shell-Befehle abschicken

Ich stelle die Tage noch ein Update zur Verfügung.
Noch irgendwelche Ideen die ich hier berücksichtigen soll?

Gruß
Dirk

juppzupp

[quote title=Dirk schrieb am So, 11 August 2013 08:43]
ZitatNoch irgendwelche Ideen die ich hier berücksichtigen soll?

Nicht das Du damit die Büchse der Pandorra öffnest :)

Also, ich hätte da mal ein Problemchen mit dem Daemon.
Folgender script wird minütlich über die crontab aufgerufen :

#!/bin/bash
mytemp="Temp:"$(perl -e 'printf (qx(cat /sys/class/thermal/thermal_zone0/temp) / 1000)')
myload=$(uptime | cut -d':' -f5|sed -e"s/,/./g")c
client 1234 text,35,30,$mytemp,0,1
client 1234 text,20,40,"$myload",0,1


das klappt aber immer nur ein paar stunden, danach aktualisert sich die anzeige nicht mehr.
auch ein manueller "client 1234 cls" bleibt einfach hängen. die uhrzeit läuft allerdings weiter.
auch wenn ich den mittleren button lange drücke, komme ich ins menu, und auch wieder zurück.
aber sämtliche versuche per shell den client zu benutzen, bleiben hängen, genauso wie jeglicher /etc/init.d/rpiLcdDaemon start|stop|restart.
ein netstat zeigt mir, das die verbindungen nicht sauber geschlossen werden:
root@raspberrypi:/var/log# netstat -an |grep :1234 |grep VERBUNDEN |wc -l
1112


weiter mit
root@raspberrypi:/var/log# killall -s9 -v client
root@raspberrypi:/var/log# netstat -an |grep :1234 |grep VERBUNDEN
tcp        0      0 127.0.0.1:45750         127.0.0.1:1234          VERBUNDEN  
tcp        0     32 127.0.0.1:35382         127.0.0.1:1234          VERBUNDEN  
tcp        0     26 127.0.0.1:35390         127.0.0.1:1234          VERBUNDEN  
tcp        0      0 127.0.0.1:1234          127.0.0.1:45750         VERBUNDEN  
root@raspberrypi:/var/log# client 1234 cls
^C


bleibt also auch wieder hängen, so hilft es nur den daemon mit -9 zu killen und neu zu starten.

was ich noch nit verstehe, ist das wenn ich den client manuell starte die sessions sauber verschwinden.

grüße
jupp

Dirk

Zitatdas klappt aber immer nur ein paar stunden, danach aktualisert sich die anzeige nicht mehr.
Ui, das sieht mir aber verdammt nach einem Bug im Daemon aus.

Zitatauch wenn ich den mittleren button lange drücke, komme ich ins menu, und auch wieder zurück.
Die erste Verbindung im FHEM bleibt immer offen. Daher funktioniert das hier.

Deine Verbindungen werden geöffnet und anschliessend wieder geschlossen. Und das immer wieder.
Daher wird irgendwann keine Verbindung mehr zugelassen bzw. mit einer neuen nicht mehr korrekt gearbeitet.

aber sämtliche versuche per shell den client zu benutzen, bleiben hängen, genauso wie jeglicher /etc/init.d/rpiLcdDaemon start|stop|restart.Auch ein "/etc/init.d/rpiLcdDaemon start|stop|restart" verwendet die Clientverbindung zum Daemon. Daher könnte das meine o.g. Vermutung bestätigen.

Ich versuche das mal nachzustellen und zu fixen.

Gruß
Dirk

juppzupp

Hallo Dirk,

geschlossen werden die Verbindungen nicht :

root@raspberrypi:/run/shm/grabber# netstat -an |grep :1234 |wc -l
914

Die hängen alle für immer in CLOSE_WAIT.

root@raspberrypi:/run/shm/grabber# netstat -an |grep :1234
tcp       21      0 127.0.0.1:1234          127.0.0.1:56866         CLOSE_WAIT


Hiermit kannst du (kann ich?) den Fehler simulieren :
#!/bin/bash
x=1
while [ $x -le 1023 ]
do
  x=$(( $x + 1 ))
  echo "text,35,50,Test,0,1" |nc -q0 -w0 127.0.0.1 1234 &> /dev/null
  echo $x
done




Grüße
jupp

juppzupp

Nun einer, den ich gar nicht verstehe :

Definert habe ich

fhem> list left_button_short
Internals:
   CFGFN      
   DEF        rpiLCD.BTN_LEFT:.Pressed {fhem("set rpiLCD_LED3 on")}
   NAME       left_button_short
   NR         141
   NTFY_ORDER 50-left_button_short
   REGEXP     rpiLCD.BTN_LEFT:.Pressed
   STATE      active
   TYPE       notify
Attributes:

fhem> list left_button_long
Internals:
   CFGFN      
   DEF        rpiLCD.BTN_LEFT:.Pressed_long {fhem("set rpiLCD_LED3 off")}
   NAME       left_button_long
   NR         142
   NTFY_ORDER 50-left_button_long
   REGEXP     rpiLCD.BTN_LEFT:.Pressed_long
   STATE      active
   TYPE       notify
Attributes:

fhem> list right_button_short
Internals:
   CFGFN      
   DEF        rpiLCD.BTN_RIGHT:.Pressed {fhem("set rpiLCD_LED1 on")}
   NAME       right_button_short
   NR         143
   NTFY_ORDER 50-right_button_short
   REGEXP     rpiLCD.BTN_RIGHT:.Pressed
   STATE      active
   TYPE       notify
Attributes:

fhem> list right_button_long
Internals:
   CFGFN      
   DEF        rpiLCD.BTN_RIGHT:.Pressed_long {fhem("set rpiLCD_LED1 off")}
   NAME       right_button_long
   NR         144
   NTFY_ORDER 50-right_button_long
   REGEXP     rpiLCD.BTN_RIGHT:.Pressed_long
   STATE      active
   TYPE       notify
Attributes:

fhem>


alles klappt wie es soll. (kurzer druck LED an, langer druck LED aus)

ändere ich aber jetzt nur einen notify zu

fhem> list right_button_short
Internals:
   CFGFN      
   DEF        rpiLCD.BTN_RIGHT:.Pressed {fhem("set rpiLCD_LED1 on") ;; system("connair privat an")}
   NAME       right_button_short
   NR         143
   NTFY_ORDER 50-right_button_short
   REGEXP     rpiLCD.BTN_RIGHT:.Pressed
   STATE      active
   TYPE       notify
Attributes:

fhem>


(ich möchte die led einschalten und den bash script namens "connair" mit den parametern "privat" und "an" aufrufen)

wird aus :fhem> 2013-08-11 21:01:33 dummy rpiLCD_LED1 on
2013-08-11 21:01:33 rpiLCD rpiLCD BTN_RIGHT: Pressed
2013-08-11 21:01:33 rpiLCD rpiLCD none



das hier (obwohl ich nur den rechten button drücke)

fhem> 2013-08-11 20:59:51 dummy rpiLCD_LED1 on
2013-08-11 20:59:52 rpiLCD rpiLCD BTN_RIGHT: Pressed
2013-08-11 20:59:52 dummy rpiLCD_LED3 on
2013-08-11 20:59:52 rpiLCD rpiLCD BTN_LEFT: Pressed



wo dreh ich mich denn da im kreis, das auf einmal angeblich auch LEFT gedrückt wird ?


danke
jupp

appi

Hallo Fhem Kollegen
dieses Projekt finde ich hoch genial, herzliche gratulation.
Kann ich bitte eine fertig bestückte Platine erwerben und wenn ja, wo.

würde mich darüber sehr freuen.

gruss und danke

Remo

Dirk

Hallo Remo,

ich hab dir eine PM geschickt.



@Jupp,

sorry für die späte Antwort. Die letzten tage waren hier etwas stressig.

Zitatgeschlossen werden die Verbindungen nicht :
Die Verbindungen wurden schon geschlossen.
Das Problem lag hier am vergessenen pthread_join. Dadurch wurde der Tread nicht wirklich beendet und nach etwa 374 neuen Verbindungen und damit auch neuen Treads konnte kein weiterer Tread mehr gestartet werden. Das hat dann wiederum dazu geführt, dass die folgenden Verbindungen nicht abgearbeitet und dann auch nicht geschlossen worden.

Ich habe das im Github gefixt. Kannst du das bitte einmal testen ob das bei dir soweit funktioniert.

Übrigens bei mehr als 10 Connections pro Sekunde kommt das Display nicht mehr mit der Aktualisierung nach.

Ich habe dein Testscript mal etwas angepasst:

#!/bin/bash
echo "cls" |nc -q0 -w0 127.0.0.1 1234 &> /dev/null
x=1
while [ $x -le 1023 ]
do
  x=$(( $x + 1 ))
  echo "text,35,50,Test: $x,0,1" |nc -q0 -w0 127.0.0.1 1234 &> /dev/null
  echo $x
  sleep 0.1
done


Gruß
Dirk

juppzupp

Moin Moin,

guck mal bitte, ob ich mich vertan habe. Das LCD wird initialisiert, über FHEM kann ich z.b. die Helligkeit steuern. "client" funktioniert nicht. weder cls noch setbacklight,auch /etc/init.d/rpiLcdDaemon stop bleibt hängen.


sudo -i
/etc/init.d/rpiLcdDaemon stop
cd /opt
mv rpiLcdDaemon rpiLcdDaemon.org
git clone https://github.com/kc-GitHub/rpiLcdDaemon.git
cd rpiLcdDaemon/src
make clean
make daemon
make client
cp rpiLcdDaemon ../
cp client ../
rm /etc/init.d/rpiLcdDaemon
ln -s /opt/rpiLcdDaemon/scripts/init.d/rpiLcdDaemon /etc/init.d/
update-rc.d rpiLcdDaemon remove
update-rc.d rpiLcdDaemon defaults
/etc/init.d/rpiLcdDaemon start



Danke !