Hur få igång 1-wire LCD controller + HD44780 20x4

Teknisk support för produkter som finns på http://www.m.nu. Generella diskussioner rörande hårdvara hänvisas till teknikforumet.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
flyvert
Hemautomation - det är mer än en hobby
Inlägg: 393
Blev medlem: 22 aug 2013, 00:48
Ort: Västerås

Re: Hur få igång 1-wire LCD controller + HD44780 20x4

Inlägg av flyvert »

CDK2H skrev:Najs tack. Du vill inte skicka över hela det där scriptet så jag har något att titta och bygga på? :o
Men givet! Sorry för sent svar... har varit lite mycket på sistone.

Fick lägga till .txt filändelse för att den skulle bli accepterad av forummotorn.

Nu är detta skript inte det enklaste om du aldrig hållt på med Python förr - du bör nog ta en kopia o börja i lite mindre skala
- Skriptet använder MQTT - ett bekvämt sätt att få saker att "prata" med varann utan man måste mecka med kommunikation ned på bitnivå
- Skriptet abonnerar på det mesta MQTT brokern exponerar; då kan t.ex. temperatur eller elförukning hämtas från "intern" cache istf via nätet
- Skriptet använder Threads, dvs trådning. T.ex. går en ping-tråd i bakgrunden som pingar två stereoprylar jag vill se om dom är på/av
- Eftersom flera trådar exekverar parallellt måste jag även skydda datat från sönderskrivning mha semaforer/lås.
- Det flesta av datat hämtas från den lokala MQTT bufferten. För gammalt data (justerbar timeout) ersätts med streck "---".
- Klockan uppdateras på hel minut, så även det mesta till vänster, men ett antal saker tex rörelsedetektion o låsstatus är händelsestyrt.

- LCDn delas in i några olika områden:
Rad1 vänster: elförbrukning, mitten: indikering av rötelsedekektion, höger: klocka (uppdateras vid varje hel minut)
Rad2 vänster: fjärrvärmeförbrukning, höger: diverse status från lås, dörrar, mm
Rad3 vänster: inomhustemp, höger: rullande presentation rad ett (regn, vind, div temperaturer, mm) som byts var 10:e sekund
Rad4 vänster: utomhustemp, höger: rullande presentation rad två

Exempel:

Kod: Markera allt

def UpdateSecondRow():
#####################
#El 1140W       18:10
#Fv 25.9kW   VHEGPBSW  <---
#In 21.7   41%
#Ut  6.6   83% 1000mb
#####################
Föreslår att du strippar allt utom "WriteLCDRow" o börjar lite tafatt med det; sen kan du bygga ut.

Skriptet "pratar" lite så jag kör det med output till logfil (för att förenkla felsökning).
Slår du på variabeln "trace" blir det mycket mer info utskrivet från här o där.

Så här kan det se ut; skriptet startade den 21 augusti, kopplade sig till brokern o gick tyst till i mitten på november.
Då fick min RFXTrx433 in en annan trådlös givare och värdet gick från förväntade "0-20" grader till negativt (-28.4) - minustecknet gjorde att raden blev för lång och "skyddsfunktionen" gick in o kapar så att inte mer än 20 skickas till LCDn.

pi@rpi1 ~/log $ more lcdd.log
2016-08-21 11:32:09.412517 Connecting to MQTT broker
2016-08-21 11:32:09.529883 Connected to MQTT broker with result code 0
2016-08-21 11:32:09.548932 Subscription registered in MQTT broker
2016-11-11 03:15:36.429731 WriteLCDRow: 'Ut -1.5? Mk -28.4?' is too long (21 characters).
2016-11-11 03:16:48.489344 WriteLCDRow: 'Ut -1.6? Mk -28.4?' is too long (21 characters).
2016-11-11 03:24:01.258012 WriteLCDRow: 'Ut -1.5? Mk -28.4?' is too long (21 characters).
Bilagor
lcdd.py.txt
LCD-drivare
(11.25 KiB) Nerladdad 222 gånger
Om traktorn stjälper; håll i ratten, hoppa ej!
Skriv svar