Publisert Legg igjen en kommentar

Mqtt , Python og PM2 veiledning

Python benyttes fordi det er et språk som kan kjøres på de fleste plattformer som windows, MacOs og Linux.
Fordi jeg ikke ønsker at mine programmer og lisenser skal misbrukes, prekompilerer jeg mine python program. De får da .pyc filextention og kan ikke leses da de består av digital kode.
Pyc filer er også raskere å kjøre og tar opp mindre ressurser på datamaskinen.
Python script kompileres på denne måten:

(sudo) python -m compileall xxxx.py eller (sudo) python3 -m compileall xxxx.py
Den ferdige prekompilerte fila havner i underkatalogen ‘__pycache__’.
Det er to hovedversjoner av python, versjon 2.x og versjon 3.x.
Når du har begge installert skiller du mellom dem både i koden og i kommando.
Kommandoer for python 2.x er ‘pip’ og ‘python’ og for python 3.xx ‘pip3’ og ‘python3’.

Jeg benytter Pahoe-mqtt tillegget til python for å kunne benytte en mqtt broker.
Pahoe-mqtt for python installeres på denne måten:

‘(sudo)pip install paho-mqtt’ eller ‘(sudo)pip3 install paho-mqtt’

Mqtt brokeren mottar meldinger og formidler dem videre til de prosessene som abbonerer på dem. På denne måten blir automasjonsystemet meget raskt og responsivt.

Pm2 – prosess manager ver 2.
Denne modulen er meget nyttig for å skape et stabilt miljø for dine python program.
Pm2 settes opp for å automatisk starte opp de programmene du ønsker ved restart av systemet, og å restarte dem hvis feil skulle oppstå.

På Linux mm:
For å installere Pm2 må du ha npm. Les mer om npm her.
Jeg brukte disse kommandoene på linux
(sudo) npm install npm -g
(sudo)npm install pm2@latest -g

pm2 start myApp.js –name mySuperApp
pm2 save
reboot
pm2 ls

På windows:
npm install pm2 -g
npm install pm2-windows-startup -g
pm2-startup install
pm2 start myApp.js –name mySuperApp
pm2 save
reboot
pm2 ls

Les mer om pm2 her.
Et python script startes på denne måten i pm2:
pm2 start myApp.py
Siden jeg benytter prekompilerte python programmer med pyc extention må jeg starte disse
på denne måten:
(sudo) pm2 start myApp.pyc –interpreter=python3    gjør at python3 blir benyttet
(sudo) pm2 start myApp.pyc –interpreter=python    gjør at standard python blir benyttet

 

Publisert Legg igjen en kommentar

MQTT – message queing telemetry transport protocol

 

Protokollen blir benyttet i  i vår Mqtt2Fan og Fan2Mqtt program for å styre og monitorer Blauberg
Wifi varmegjenvinning enheter og kompatible enheter.

Dette er en protokoll brukt av de fleste automasjons systemer på markedet idag.
Som f.eks. HomeSeer Hs3, OpenHab m.m.
Kompatibel med Blauberg Expert Wifi, Vents Twinfresh Wifi og Flexit Roomie One Wifi enheter.
Vi har ferdig kontroll programvare for å knytte disse
viftene opp mot en mqtt broker(server).

Dette betyr at de kan styres enkeltvis eller gruppevis fra hvilken
som helst mqtt klient med rettighet og tilgang til serveren.
Her er er skjermbilde fra Mqtt panel appen på Android(anbefales):

Her har jeg satt opp styring slik at jeg kan se gjeldende setting på vifta og samtidig kan jeg med et tastetrykk
sparke igang en kombinert kommando som hastighet 2 og ventilasjon.

I konfigurasjonsfila til Mqtt2Fan er det mulig å sette opp tre tilleggs seksjoner som vifta skal lytte på. Fra før
lytter vifta på ipadressen,location og all(hvis all=1). Slik kan man med et tastetrykk f.eks. skru av alle viftene
ved brann eller andre årsaker. Eller man kan styre en gruppe vifter f.eks bedrooms.
Men hvis en vil utlukke en eller flere vifter fra all av en årsak, setter man bare all=0.
Section3 har jeg satt opp med north som antyder hvor rommet med vifta vender. Hvis man bruker dette kan man kontrollere alle viftene som vender f.eks. mot nord om det er kraftig nordavind eller ta inn frisk kald luft om sommeren hvis den siden ligger i skyggesiden av huset.
Section1 er satt opp med bedrooms(kan også være soverom), og da kan man styre de sammen med en kommando. Det er på denne måten mulig å styre viftene i gruppe, etage eller seksjon av huset.
Og alle disse enhetene blir med dette mulig å fjernstyre fra internet via en standard eller egen
mqtt klient/app om man ønsker det.

Enkeltromsventilasjon omdannes med vår løsning til et fullverdig balansert ventilasjonssystem som
gir mulighet for støtte via Enova.

Kontrollprogrammet kjøres på en egnet pc, Mac eller Linux enhet som
f.eks Raspberry Pi. Det må kobles opp en sesjon pr vifte man ønsker å styre.
Kontrolleren og vifta bør stå i samme nettverk, ellers må det rutes slik at
kontrolleren når både vifta og har tilgang til brokeren(serveren).
Den beste løsningen er nok å ha en kontroller for hvert wifi nettverk.

Jeg benytter f.eks en kontroller for wifi i huset(raspberry Pi m/flere mqtt2fan prosesser
styrt av pm2(prosess manager).
I tillegg har jeg en kontroller på en virtuell Pi for kontorets wifi og vifter.

Krever:
MQTT Broker (f.eks Mosquitto).
Mqtt brokeren(serveren) kan være lokal eller public. Bør være lokal da støtte for sikkerhet på
dette nivået ikke er lagt inn med annet enn brukernavn og passord.

Skjermdump fra Mosquitto Broker status på viftene hvert 10 sek.

Skjermdump fra Mqtt2Fan programmet som venter på mqtt melding for å styre vifta.

Skjermdump fra Fan2Mqtt programmet som henter status fra viftene og publiserer dem til brokeren.

Skjermbilde fra Rapberry Pi som viser Pm2 monit og status på prosessene der.

Som kontroller kan man benytte Raspberry Pi eller annen Linux kontroller , Mac eller PC som kan kjøre Python 2 eller 3.
Må ha MQTT biblioteket og Python-six biblioteket installert.
Wifi nettverk.
En eller flere Blauberg Expert Wifi, Vents Twinfresh Wifi eller
Flexit Roomie One Wifi enheter.
Gyldig lisens til hver av viftene.

**Hvis du kjøper en eller flere Blauberg Vento Expert Wifi enheter får du 50% rabatt på lisensene!

Det er som nevnt over mulig å benytte Mqtt sammen med HomeSeer Hs3.
Da er mcsMqtt plugin’en(gratis) grei å bruke som mqtt klient der.
Den er godt dokumentert på Homeseer forumet.