Vai al contenuto
PLC Forum


Integrazione OpenHAB con Hplc


flavio.dallara

Messaggi consigliati

flavio.dallara
Quote

Per editare questi file è sconsigliato un editor apposta che si scarica dal sito di openHAB.

Si tratta di openHAB Designer

 

Sconsigliato a parte... :lol:  avevo già installato openHab Designer avendo provato a connettere la stazione meteo netatmo..

è stato dopo questo test che mi era balzata l'idea di connettere homeplc..

 

 

Quote

Osta te???!!... subito con la sitemap? :superlol:

 

Si forse ho accelerato un po' i tempi... da che parte comincio per leggere qualcosa da HPLC ? un minimo credo di aver capito la logica di openhab

Link al commento
Condividi su altri siti


  • Risposte 161
  • Created
  • Ultima risposta

Top Posters In This Topic

  • flavio.dallara

    74

  • smoothhands

    63

  • del_user_56966

    19

  • ilgio80

    4

Cerco di chiarirti un pò la cosa.

L'HomePLC.Linux è un dispositivo composto da due processori distinti.

A livello linux si tratta di un ARM Cortex A8 mentre a livello domotico

c'è un PIC di qualche tipo (almeno mi pare).

Il concetto è che a livello domotico si comporta come un qualsiasi

altro dispositivo del mondo HomePLC mentre in più ha una macchina linux

che lo ingloba. Il processore ARM è connesso tramite qualche bus di sistema

al processore domotico... posizionato sulla scheda principale.

Il componente domotico e le sue risorse (vedi ad esempio la tabella dei registri)

vengono visti a livello linux e interfacciati tramite driver di sistema più alcune

librerie scritte in c (diverse librerie a seconda del linguaggio di programmazione).

 

Nel nostro caso utilizziamo una libreria che rende disponibili alcune API per

l'accesso ai registri della tabella di risorse HomePLC e che si interfaccia con Java.

Il bello di questo approccio è che il sistema domotico non si deve preoccupare

di accessi al bus HomePLC, richieste a master o slave ma semplicemente

elaborare bit, byte e word della tabella in questione. Grossomodo come poi

viene fatto col Ladder. 

 

A seconda del firmware che viene inserito nel processore domotico l'HomePLC.Linux

si può comportare come Controller o come MasterWEB.

Nel primo caso è lui che comanda tutto il sistema HomePLC mentre nel secondo caso

la logica principale è quella del controller classico (comunque presente) e lui si occupa di interfacciare il

sistema HomePLC all'utente e ad altri dispositivi tramite tecnologie web o sistemi come

openHAB.

 

Quindi andrebbe subito verificato con l'assistenza se tu hai installato il firmware per 

controller o per MasterWEB. E provvedere a un reflash nel caso sia necessario.

 

 

 

 

 

 

 

 

Link al commento
Condividi su altri siti

Visto che hai già fatto delle prove con la stazione meteo Netatmo puoi

tranquillamente integrarla con HomePLC e sfruttare le sue caratteristiche 

a tuo favore e ad uso e consumo della logica Ladder.

Lo scopo di openHAB è proprio questo.

 

Bene... supponendo che hai risolto il dubbio sul firmware domotico

occorre spiegare come istruire il binding per HomePLC.

Questo binding si trova tra il sistema openHAB e la libreria

nativa con le API Java di cui parlavo prima.

Il suo scopo è quello di creare tanti canali bidirezionali tra

gli Item di openHAB e i registri della tabella delle risorse HomePLC.

 

Quando devo scrivere sui registri si parla di "command" mentre quando 

leggo ottengo degli "state update".

 

Il binding HomePLC accetta Item di tipo Switch, Contact, Dimmer e Number.

Tra questi quattro, Contact, è l'unico al quale è inutile inviare comandi.

Switch e Contact sono item che è possibile connettere a risorse HomePLC

espresse in bit mentre Dimmer e Number vengono usati per byte, word, ecc.

 

Se hai già lavorato in Ladder sai già come accedere alle risorse HomePLC 

e allora da qui alla configurazione degli itam il passo è breve.

 

Link al commento
Condividi su altri siti

Dal wiki di openHAB puoi vedere che un item è definito come

itemtype itemname ["labeltext"] [<iconname>] [(group1, group2, ...)] [{bindingconfig}]

 

Itemtype sono gli Switch, Contact, Dimmer e Number che dicevamo prima.

Itemname è una stringa qualunque, purchè non contenga spazi, che identificherà

una particolare risorsa HomePLC.

{bindingconfig} è quello su cui ci concentreremo inizialmente.

 

Immaginiamo di voler definire un ingresso digitale di uno slave.

La risorsa può essere ad esempio definita in Ladder con %IX5.3

o anche con %MX....

Con openHAB è analogo...

Contact Pulsante_Cucina {homeplc="IX:5.3"}    oppure

Contact Pulsante_Ingresso {homeplc="MX:8.14"}

 

a questo punto potresti già andare nella sitemap e aggiungere

i due ingressi come...

Switch item=Pulsante_Cucina label="Pulsante della cucina" 

 

Prova a inserire qualche ingresso HomePLC così vediamo se 

il sistema ad eventi funziona correttamente.

Link al commento
Condividi su altri siti

scusate se mi intrometto in questa discussione...

io sono rimasto indietro di un paio di anni....

quando con un raspberry ho fatto un sistema per interfacciarmi al hplc con RTU utilizzando il convertitore USB.

facendo un demone python che continua ad interrogare l HPLC sullo stato dei registri.

 

oraho visto questo openHAB.

 

ma se prendo un master linux, questo openHUB ha tutto integrato? cioè l'interfaccia e devo solo settare imiei ingressi e uscite?

oppure mette a disposizione solo le API e io devo ricrearmi tuta la programmazione per fare la APP?

Link al commento
Condividi su altri siti

del_user_56966
Quote

ma se prendo un master linux, questo openHUB ha tutto integrato? cioè l'interfaccia e devo solo settare imiei ingressi e uscite?

 

mi pare che sia tutto pronto devi sono impostare le regole (funzioni) della tua applicazione...

in questo video viene spiegato chiaramente...

 

 

chiaramente i tempi di accesso al sistema HomePLC ti cambiano drasticamente...

passando dai secondi ai microsecondi...

|

ma d'altra parte le tecnologia non si misura solo con la potenza del Processore...

ma considerando l'intera architettura di un sistema...:smile:

 

Il Modbus RTU è un alternativa valida per il monitoraggio ma questo non lo rende ne innovativo ne performante...

oggi ci sono soluzioni molto più potenti... come appunto questa!

 

 

 

 

 

Link al commento
Condividi su altri siti

cioè da quel che ho capito... l openHAB sostituisce anche la programmazione con il ladder?

mi sembra di aver capito che programma anche i pulsanti con openHAB

è vero??

Link al commento
Condividi su altri siti

flavio.dallara
Quote

openHAB sostituisce anche la programmazione con il ladder?

 

Ni... A mio avviso la soluzione migliore è quella di mantenere la logica della domotica in ladder ( o script linux nel caso di HomePLC Linux ) ed utilizzare OpenHAB per l'interfaccia Web o APP da dispositivi mobili. Inoltre lo puoi utilizzare per scambiare dati con altri dispositivi compatibili OpenHAB via TCP/IP.

Link al commento
Condividi su altri siti

flavio.dallara
Quote

Prova a inserire qualche ingresso HomePLC così vediamo se 

il sistema ad eventi funziona correttamente

 

Si sono fermo un tantino prima... devo collegare il masterweb al bus... :P appena ho un minuto vedo di farlo... Quindi collego il bus sul morsetto bus1 e lui dovrebbe già avere l'ID 18 corretto? Lo dovrei vedere da ABS come tutti gli altri master? Non vedo switch per impostare l'ID del processore domotico.. o forse si fa dal device discovery...

Link al commento
Condividi su altri siti

Quote

ma se prendo un master linux, questo openHUB ha tutto integrato? cioè l'interfaccia e devo solo settare imiei ingressi e uscite?

oppure mette a disposizione solo le API e io devo ricrearmi tuta la programmazione per fare la APP?

Ha tutto integrato... interfaccia web, interfaccia nativa Android e iOS, supervisione/programmazione web tramite Habmin

oppure tool di programmazione chiamato openHAB Designer (per Windows, Linux e Mac).

 

Quote

cioè da quel che ho capito... l openHAB sostituisce anche la programmazione con il ladder?

Io ho acquistato un HomePLC.Linux (non MasterWeb) assieme a un HomePLC.Ladder...

...non ho mai attivato la licenza di LadderHome e non ho mai installato l'HomePLC.Ladder.

Tutta la logica del mio appartamento è interamente realizzata con il linguaggio attualmente

utilizzato da openHAB. Si tratta di Xtend ed è un dialetto Java.

Questa logica è contenuta nei file di rule.

 

Quote

Ni... A mio avviso la soluzione migliore è quella di mantenere la logica della domotica in ladder ( o script linux nel caso di HomePLC Linux ) ed utilizzare OpenHAB per l'interfaccia Web o APP da dispositivi mobili.

Dubito che qualche script linux possa essere interfacciato con openHAB... a meno che sia stato realizzato apposta.

Sicuramente lo scenario pensato da Flavio è uno di quelli possibili.

 

Si va dall'utilizzare semplicemente openHAB come interfaccia grafica (mediante MasterWEB) per la logica di

un HomePLC.Ladder al completo controllo di una installazione utilizzando HomePLC.Linux come controller.

Nel mezzo è possibile anche integrare logica del MasterWEB con logica dell'HomePLC.Ladder

magari esplorando scenari che prima non erano realizzabili.

Ne è un esempio l'integrazione con il dispositivo NetAtmo di cui parlava Flavio

ma è possibile pensare anche a servizi web (quindi non dispositivi hardware).

 

Quote

mi sembra di aver capito che programma anche i pulsanti con openHAB

è vero??

Lo fa si... e puoi riprogrammare i pulsanti senza ricompilare nulla.

Basta cambiare qualche riga di testo nel file delle rule senza arrestare

il sistema.

 

Ovviamente l'HomePLC.Linux essendo il controller ha una autonomia

maggiore mentre il MasterWEB deve in parte appoggiarsi alla logica Ladder..

 

Ovviamente le cose possono essere migliorate... magari per come viene 

gestita la programmazione col MasterWEB; ma sicuramente per chi

ha già in mente di acquistare un MasterWEB per altri motivi, una prova

con openHAB tanto per vedere come si comporta secondo me vale 

la pena di farla. E' tutto gratis.

 

 

Link al commento
Condividi su altri siti

Quote

Non vedo switch per impostare l'ID del processore domotico.. o forse si fa dal device discovery...

No, non ne ha. Immagino si faccia dal Device Discovery.

Io con la versione controller non ho avuto di questi problemi :lol:

Link al commento
Condividi su altri siti

Può anche essere ma non è detto che ti avrebbe soddisfatto pienamente.

L'ambiente ufficiale di programmazione è quello Ladder ed è anche quello

che ti permette di gestire tutti i dispositivi HomePLC nelle versioni firmware più aggiornate.

Compresa la biotermoregolazione.

 

L'ETM3 lo uso comunque per programmare i dispositivi con Device Discovery

e la supervisione tramite ABS è sempre necessaria.

 

La versione HomePLC.Linux supporta la sua serie di dispositivi e solo con versioni

di firmware compatibili. Quindi va valutato bene.

Io avevo già intenzione di lavorare con quello e quindi ho accettato

questo vincolo.

Va detto comunque che in caso di acquisto di un particolare dispositivo

non ancora supportato l'assistenza provvede, nel limite del possibile,

ad integrarlo nel firmware dell'HomePLC.Linux.

Attualmente le priorità della NET sono altre e quindi lo sviluppo di supporto

per questo prodotto è limitato al solo necessario.

 

La versione MasterWEB invece affianca la versione Ladder e quindi 

non elimini licenze e HomePLC.Ladder.

 

Poi considera che questo binding per openHAB l'ho realizzato

un anno fa... e c'è voluto un pò per aggiustare alcune cose.

E ancora ce ne sarebbe da fare.

Link al commento
Condividi su altri siti

flavio.dallara
Quote

Dubito che qualche script linux possa essere interfacciato con openHAB...

Da profano di Homeplc Linux ho spiegato male la cosa... quello che intendevo era proprio quello che Smoothhands è riuscito a spiegare egregiamente..

 

Toglimi una curiosità per capire un po' il mondo Hplc Linux.  La programmazione della logica ( quello che verrebbe fatto in ladder ) se non volessi usare openhab come nel tuo caso... dove viene fatta? Immagino con quello che io sbagliando ho chiamato "script" dentro al PLC con qualche tipo di linguaggio...

Link al commento
Condividi su altri siti

flavio.dallara
Quote

Poi considera che questo binding per openHAB l'ho realizzato un anno fa... e c'è voluto un pò per aggiustare alcune cose.

E ancora ce ne sarebbe da fare.

 

Quindi l'hai realizzato tu il binding in java? Complimenti!

Link al commento
Condividi su altri siti

Beh... con script solitamente ci si riferisce si a certi tipi

di programmi ma realizzati in linguaggi chiamati di

scripting. Linguaggi interpretati... cioè sorgenti che vengono dati

in pasto ad altri programmi (interpreti) che ne eseguono il codice.

 

Nel caso di linux ricadono gli script di shell, ovvero programmi

anche abbastanza complessi il cui ambiente di esecuzione è la 

riga di comando. 

 

Comunque non credere, con HomePLC.Linux, ho appreso quello

che mi serviva per andare avanti. Saper destreggiare un

embedded è un'altra cosa.

 

Se non vuoi usare openHAB hai a disposizione C/C++, PHP,

Python e ovviamente Java. Anche una versione particolare

di Basic di cui però si è persa traccia.

Nel caso di versione con display ha senso anche sfruttare

le librerie QT per l'interfaccia grafica.

 

In eventuale programma scritto con questi linguaggi si

interfaccia alla tabella delle risorse tramite opportune

librerie rilasciate dalla NET.

 

In parte, quella che sfrutta openHAB, è stata riscritta per 

consentire una gestione ad eventi della comunicazione

nella direzione HomePLC --> openHAB.

 

Il programma che vai a scrivere deve contenere la

logica che intendi implementare e nel caso più semplice

si tratta di un loop infinito dove leggi gli ingressi,

confronti i valori e applichi i comandi.

Se ci pensi, come logica, è simile al ladder.

Link al commento
Condividi su altri siti

Inizialmente era nato con un'altra idea in testa.

Cioè di realizzare un sistema autonomo.

 

Poi guardando bene openHAB era una soluzione molto intelligente

che offriva e offre molte funzionalità.

Allora perchè non integrare il sistema HomePLC con tutti gli altri

supportati da openHAB?

 

La primissima versione prevedeva di installare openHAB su un 

dispositivo separato: come un raspberry pi.

In questo modo il trasferimento dei dati tra raspberry

e HomePLC.Linux avveniva via rete.

L'elaborazione dell'evento avveniva sempre in modo

nativo nella libreria per linux quindi poi inviato

ad openHAB via rete. In questo modo la lentezza

del trasferimento via rete non pregiudicava più di tanto le prestazioni.

Tra l'altro questa sarebbe l'applicazione ufficialmente 

accettata dalla community openHAB. Tutti gli altri

binding sono realizzati così.

 

Poi mi si è fatto notare che HomePLC.Linux  sarebbe stato

in grado di eseguire una installazione di openHAB direttamente

e allora è nata una versione di openHAB leggermente modificata

per avviarsi senza errori su HomePLC.Linux.

 

Per ultimo è stato realizzato la versione per MasterWEB del binding, che 

lavora in modo leggermente differente, e che nel tempo è stato migliorato

grazie a qualche test gentilmente eseguito da alcuni utenti.

 

Link al commento
Condividi su altri siti

La "magia" comunque la fa openHAB.

La quantità del codice del binding non è poi così elevata.

Il più è stato capire dove mettere le cose... e poter copiare 

da altri sorgenti ovviamente ha aiutato.

Link al commento
Condividi su altri siti

nella prima versione con il raspberry...

cosa che ho anche io e comunico con il convertitore USB via RTU

 

tu come comunicavi tras raspberry e hplc?

Link al commento
Condividi su altri siti

Comunicavo inizialmente tramite socket e scambio di dati

mediante connessione TCP di pacchetti binari in Java.

Poi ho fatto della prove tramite protocollo CoAP.

 

In ogni caso era richiesto l'HomePLC.Linux.

Non direttamente con la versione Ladder.

Link al commento
Condividi su altri siti

del_user_56966
Quote

In ogni caso era richiesto l'HomePLC.Linux.

 

HomePLC Linux ha anche una libreria Modbus TCP e mi pare sia utilizzabile sia come Server che in modalità Client....

Link al commento
Condividi su altri siti

  • 3 weeks later...
flavio.dallara

Ciao Smoothhands.. non sono scappato, ma non sono ancora riuscito a collegare il masterweb al bus... dovrei prendermi qualche giorno di ferie...

Nel frattempo stavo provando qualche binding... sono riuscito a collegarlo alla stazione meteo netatmo e stavo tentando di collegarlo ai condizionatori daikin emura.

Credo di avere qualche problema con la versione di java... secondo te se lo aggiorno alla versione 1.8 ho poi problemi con il binding homeplc?

Link al commento
Condividi su altri siti

Perchè pensi di avere qualche problema con la versione di Java?

Il binding DAIKIN richiede che sia installato il KKRP01A Controller

sulle unità.

 

Tempo fa eri obbligato ad utilizzare il tool JCreate per

realizzare una versione custom del JRE che funzionasse

su embedded. Adesso pare che non serva più.

 

Il binding homeplc non dovrebbe aver nessun problema con 

la versione 1.8

Tieni comunque presente che openhab è dato per funzionante

con la versione 1.7 di Java

Link al commento
Condividi su altri siti

flavio.dallara
Quote

Il binding DAIKIN richiede che sia installato il KKRP01A 

 

Lo so, ma sul forum openhab vedo che si dovrebbe far funzionare anche con l'interfaccia wireless. ( Ovviamente ce l'ho installata )

https://community.openhab.org/t/http-commands-for-daikin-brp072a42-wifi-control-working/10314

Ho provato e non mi funziona... un tentativo era quello di aggiornare Java... 

Nell'articolo c'è un binding modificato per funzionare con le unità wireless..

Non riesco a vedere errori nemmeno sul file openhab.log

 

Attraverso le API non uffciali vedo che l'unità mi risponde ma da openhab non funziona..

 

Quote

Tieni comunque presente che openhab è dato per funzionante con la versione 1.7 di Java

:thumb_yello: grazie

Link al commento
Condividi su altri siti

flavio.dallara

Forse sono veramente Off topic.... ma secondo te per capire ed analizzare il problema se volessi provare almeno ad accendere l'unità tramite le API non uffciali come dovrei impostare il comando "/common/set_control_info" ?     http://192.168.X.X/"/common/set_control_info ... e poi? pow=1 ?

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

×
×
  • Crea nuovo/a...