Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Interfacciare OpenHab ad impianto domotico DUEMMEGI tramite ModBus


Messaggi consigliati

Inserita:

Questo il mio risultato...

23:12:11.060 [DEBUG] [o.b.m.internal.ModbusActivator:30   ] - Modbus binding has been started.

23:12:11.123 [DEBUG] [i.internal.GenericItemProvider:341  ] - Start processing binding configuration of Item 'TestModbus (Type=NumberItem, State=Uninitialized)' with 'ModbusGenericBindingProvider' reader.

23:12:11.324 [DEBUG] [.modbus.internal.ModbusBinding:260  ] - given modbus-slave-config-key 'slave1.connection' does not follow the expected pattern or 'serial.<slaveId>.<connection|id|start|length|type|valuetype|rawdatamultiplier|writemultipleregisters>'

23:12:11.327 [DEBUG] [.modbus.internal.ModbusBinding:260  ] - given modbus-slave-config-key 'slave1.id' does not follow the expected pattern or 'serial.<slaveId>.<connection|id|start|length|type|valuetype|rawdatamultiplier|writemultipleregisters>'

23:12:11.329 [DEBUG] [.modbus.internal.ModbusBinding:260  ] - given modbus-slave-config-key 'slave1.length' does not follow the expected pattern or 'serial.<slaveId>.<connection|id|start|length|type|valuetype|rawdatamultiplier|writemultipleregisters>'

23:12:11.347 [DEBUG] [.modbus.internal.ModbusBinding:260  ] - given modbus-slave-config-key 'slave1.start' does not follow the expected pattern or 'serial.<slaveId>.<connection|id|start|length|type|valuetype|rawdatamultiplier|writemultipleregisters>'

23:12:11.349 [DEBUG] [.modbus.internal.ModbusBinding:260  ] - given modbus-slave-config-key 'slave1.type' does not follow the expected pattern or 'serial.<slaveId>.<connection|id|start|length|type|valuetype|rawdatamultiplier|writemultipleregisters>'

23:12:11.351 [DEBUG] [.modbus.internal.ModbusBinding:344  ] - config looked good, proceeding with slave-connections

23:12:11.399 [INFO ] [.service.AbstractActiveService:169  ] - Modbus Polling Service has been started

Tutto sembra corretto ma niente polling verso il device... e ovviamente lo stato dell'Item non viene aggiornato.

Le mie impostazioni ovviamente sono anche un pò differenti:

modbus:poll=2000
modbus:salve1.connection=/dev/ttymxc2:19200:8:even:1:rtu
modbus:slave1.type=float32
modbus:slave1.id=1
modbus:slave1.start=2999
modbus:slave1.length=2

Rimango un pò perplesso.

 


  • Risposte 141
  • Created
  • Ultima risposta

Top Posters In This Topic

  • smoothhands

    73

  • omar1971

    65

  • electricb

    2

  • Ivan Botta

    1

Inserita:

Sembra che la comunicazione con la porta seriale non avvenga comunque.

Forse la soluzione è quella che hai trovato tu su internet.

Prova a installare anche il serial Binding.

Come ti ho risposto anche in privato probabilmente la libreria rxtx contenuta

in quest'ultimo può risolvere il problema.

Java non ha la possibilità di gestire le porte seriali direttamente e una soluzione

è quella di appoggiarsi su librerie come la rxtx.

openHAB ha un meccanismo che può caricare dinamicamente a runtime il contenuto

degli addon se vengono richiesti.

Inserita: (modificato)

Ho controllato meglio andando a verificare i sorgenti.

Il binding modbus richiede sì un altro componente ma non è il binding serial.

 

Schermata%202016-01-18%20alle%2017.12.42

 

La dipendenza indicata fa già parte del pacchetto openHAB e come giustamente

avevi scritto tu in privato è il componente... org.openhab.io.transport.serial_1.7.1.

Ma non è un altro addon... è proprio parte di openHAB.

 

 Schermata%202016-01-18%20alle%2017.15.05

 

Come puoi vedere dall'immagine, al suo interno, non c'è altro che

quel nrjavaserial-3.9.3.jar e, come si legge dal suo sito, si tratta di

un fork della libreria rxtx.

L'addon org.openhab.binding.serial-1.7.1 a questo punto non serve a

a nulla.

 

Modificato: da smoothhands
Inserita:

quindi non si capisce la motivazione... mi sembra di capire?

Inserita:

Come ultima possibilità qualcuno ha utilizzato con successo un trucco.

Ha installato un servizio su windows che rimane tra binding modbus e porta seriale.

http://mbus.sourceforge.net/

In pratica utilizzo il binding modbus in modalità tcp (che va molto meglio) e lo connetto

all'indirizzo del software mbus... che poi trasforma tutto in modbus rtu su seriale.

Pare che così funzioni.

Hi,

Thanks for the hints. I gave up trying to fix openhab's internal support for modbus/rtu.
I found another solution which works around some/most of the problems I described.
I added an additional service between openhab and the serial adapters used for modbus communication.
I used http://mbus.sourceforge.net/25 which works as a modbus/tcp <-> modbus/rtu gateway.
Then I changed the configuration of openhab to use modbus/tcp which seems to work way better than the serial version.
Additional bonus is that now I can connect to the slaves from outside of openhab with some standalone modbus clients without disabling the modbus parts in openhab.

This setup is not perfect but fixes some of the problems and opens some additional possibilites so for now I'll keep it running like this.

Regards
Jacek

Inserita:

accidenti mbus è solo per linux like... :wallbash:

forse qualcosa di analogo per windows c'è.

Inserita:

Accidenti.. mi sa che per le mie capacità è un pò troppo complicato....  ma non vorrei mollare

Ho utilizzato un pc Windows credendo di avere meno problemi ma non mi sembra.

avevo iniziato installando openhab su bananapi (tipo raspberry) ma poi ho notato che non gira il designer.... quindi ho deciso per l'installazione si pc Win solo per la programmazione poi avrei trasferito tutto il progetto su Bananapi.

sono disponibile a sacrificare un vecchio (ma vecchio) pc fisso per installare una versione linux che mi possa facilitare il tutto.. che ne dici?

 

Inserita:

e di questo link... che ne pensi?

che sono le stesse impostazioni che abbiamo utilizzato pure noi.

Accidenti.. mi sa che per le mie capacità è un pò troppo complicato.... 

Hai provato a sostituire nella directory <openhab_dir>/addon il binding 

del modbus con la versione più vecchia? Ricordati di eliminare :rtu nel parametro connection.

avevo iniziato installando openhab su bananapi (tipo raspberry) ma poi ho notato che non gira il designer

Puoi rimuovere la directory configurations per intero e copiarla su windows, usare Designer, e poi ricopiare tutto

sopra bananapi.

Dopo però le impostazioni per la porta seriale cambiano /tty.../xxxx e li devi usare un convertitore usb/seriale.

Inserita:

grazie ancora...

dove trovo addon modbus vecchio?

 

Inserita: (modificato)

hoops.. scusami...

ho provato con altro software per test modbus... e riesco a leggere lo stato delle uscite del modulo e a scrivere sul modulo... 

la word che risponde è la 317 

--- ho provato...

22:59:19.754 [INFO ] [.service.AbstractActiveService:169  ] - Modbus Polling Ser
vice has been started
Last request: 01 01 01 3d 00 10 ad f6
Error reading response
execute try 1 error: I/O exception - failed to read
Last request: 01 01 01 3d 00 10 ad f6
CRC Error in received frame: 0 bytes:
execute try 2 error: I/O exception - failed to read
Last request: 01 01 01 3d 00 10 ad f6
CRC Error in received frame: 0 bytes:
22:59:20.835 [DEBUG] [.b.modbus.internal.ModbusSlave:326  ] - ModbusSlave:I/O ex
ception - failed to read
22:59:20.897 [INFO ] [.b.modbus.internal.ModbusSlave:294  ] - ModbusSlave error
getting responce from slave

 

questo è il file cfg

#La le altre righe che inserirei sono queste...
modbus:serial.slave1.id=1
modbus:serial.slave1.connection=COM2:19200:8:none:1
modbus:poll=1000
modbus:serial.slave1.start=317
modbus:serial.slave1.length=16
modbus:serial.slave1.type=coil

 

Modificato: da omar1971
Inserita: (modificato)

Eh... secondo me è che la versione più vecchia utilizza

lo standard modbus ascii e quindi non riesce a capire la risposta.

Strano che lo slave cerchi di rispondere... non dovrebbe capire nemmeno lui. Mah !!!

E' che se uno volesse acquistare un gateway modbus tcp <--> modbus rtu dovrebbe

sborsare un bel pò di soldi.

Si potrebbe vedere quanto costa una interfaccia RS485 per raspberry e cercare

di trovare un gateway software che fa la conversione TCP<-->RTU.

Che razza di accrocchio che tocca fare.

 

Modificato: da smoothhands
Inserita: (modificato)

Per quanto riguarda le configurazioni openHAB mette a disposizione

un binding per dropbox.

Significa che, una volta terminata la procedura di autenticazione, 

viene mantenuta aggiornata una copia delle configurazioni su un

account dropbox.

In questo modo da qualsiasi pc in rete sarebbe possibile modificare 

le configurazioni da remoto tramite Designer.

L'alternativa è Abmin che non è altro che un pacchetto che va

aggiunto all'installazione di openHAB ma è un pò delicato.

Però permette di modificare parte delle configurazioni

online direttamente in un browser.

Modificato: da smoothhands
Inserita:

Ciao... grazie per i consigli...

Quando hai tempo e voglia  Mi daresti delle lezioni? Sempre che trovi il modo per connettere il sistema

Come visualizzare lo stato di:

un ingresso (bit 0 della word 100) mediante una immagine (finestra aperta/chiusa)

una uscita (bit 4 della word 200) mediante una immagine (lampada accesa/spenta)

Un comando impulsivo che mi agisca sul bit 2 della word 30

Un comando passo passo che mi agisca su una uscita (bit  3 word  200)

una word 20 che mi restituisce un valore da dividere per un dato fisso per ottenere la temperatura in gradi Centigradi

Come recuperare un dato da un siro web e storicizaarlo

Come recuperare un dato da un sito wed protetto da password (che sono a conoscenza) e storicizzare il dato

Come storicizzare i dati di temperatura e visualizaeli su grafico.

Ciao

 

 

 

Inserita:

Addirittura delle lezioni? :lol:

Il concetto principale su cui si basa openHAB è quello di Item: un oggetto con stato al quale

è legata una risorsa. Tale risorsa è raggiunta grazie al meccanismo racchiuso nel binding.

La disponibilità di più binding consente di integrare con le rules risorse di natura differente

e di creare logiche che con sistemi chiusi sarebbe molto difficile realizzare.

Il binding è definito nell'opportuno file ed è una cosa del tipo:

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

Come vedi alcune cose sono opzionali (racchiuse tra parentesi quadre) e tra queste c'è <iconname>.

Nella cartella <runtime directory>/webapps/images/ trovi tutta una serie di immagini che altro non sono

che le icone dell'interfaccia grafica di openHAB.

un ingresso (bit 0 della word 100) mediante una immagine (finestra aperta/chiusa)

una uscita (bit 4 della word 200) mediante una immagine (lampada accesa/spenta)

Nel caso di Items di tipo switch solitamente sono presenti dei file immagini di due tipi: <img>-on.jpg e <img>-off.jpg

Questo significa che in automatico quando viene rilevato lo stato on sull'Item viene usata una immagine e nel

caso di stato off viene usata l'altra. Se tu volessi usare un'immagine tutta tua non hai che da realizzare le due

immagini per i due stati ed inserirle nella directory opportuna. Occhio ad <iconname>.

Un comando passo passo che mi agisca su una uscita (bit  3 word  200)

Generalmente tutti i comandi sono passo passo. Ma molto dipende da come funzona il sistema domotico

al di la del binding.

Un comando impulsivo che mi agisca sul bit 2 della word 30

In questo caso occorre inviare un comando con stato ON e successivamente un comando con stato OFF.

Quindi sei costretto a creare un Item virtuale che inserirai nella sitemap che funzionerà passo passo e

tutte le volte che gli farai cambiare stato realizzare una rule del tipo...

rule "Controllo impulsivo"
	when Item PulsanteVirtuale changed
	then 
		ComandoReale.sendCommand(ON)
		ComandoReale.sendCommand(OFF)
end

una word 20 che mi restituisce un valore da dividere per un dato fisso per ottenere la temperatura in gradi Centigradi

A patto di aver legato l'Item con la word del sistema domotico ti serve una rule dove avvengono i calcoli

che ti servono (supponiamo serva dividere per 10):

rule "Gradi centigradi"
when Item Temp_Sala changed 
then
	var Number t_sala =  Temp_Sala.state as DecimalType
	var Number t_sala_gradi = t_sala / 10
	Temp_Sala_sitemap.postUpdate(t_sala_gradi)
end

Come vedi catturo lo stato dell'Item connesso al sistema domotico, faccio delle operazioni usando delle 

variabili di passaggio e alla fine aggiorno lo stato dell'Item utilizzato nell'interfaccia grafica.

Questi passaggi possono anche essere ottimizzati ma questo dovrebbe farti capire la logica di funzionamento.

Come recuperare un dato da un siro web e storicizaarlo

Come recuperare un dato da un sito wed protetto da password (che sono a conoscenza) e storicizzare il dato

Questo non l'ho ancora fatto però ho visto leggere la temperatura da un sito quindi immagino si possa fare

lavorandoci sopra un pò.

Come storicizzare i dati di temperatura e visualizaeli su grafico.

Questo lo trovi anche in questa serie di post

http://www.plcforum.it/f/topic/187769-controllo-remoto-knx-con-webserver-raspberry/?do=findComment&comment=1408032

Inserita:

Il comando impulsivo che ho scritto prima funziona correttamente ma

non è bello da vedere in quanto nell'interfaccia grafica hai uno switch

e l'impulso viene generato ogni volta che cambia stato.

Bruttino!

C'è un modo più gradevole. Magari ci guardiamo prossimamente.

Inserita:

E' stata rilasciata la versione 1.8 di openHAB... sarebbe da provare.

Appena posso voglio anche provare ad inserire un parametro nel file di avvio

per vedere se risolviamo la questione. 

Ti faccio sapere dei risultati.

Inserita:

Niente da fare anche con il parametro che dicevo non sono riuscito a comunicare su bus seriale.

Sembra tutto a posto ma in realtà non effettua polling.

Non ho potuto provare però con la versione 1.8.

 

Inserita:

Ti ringrazio per ciò che stai facendo...

 Ma fin che non comunico con l'interfaccia .... non posso fare prove..

 E soprattutto devo capire la logica di programmazione

 Che per me non è semplice.

Possso chiderti che lavoro fai? ... sei molto disponibile

Cia. Grazie.... alla prossima ... speriamo con novità positive.

Se vedo qualcosa in internet ti faccio sapere. 

 

Inserita:

..."che lavoro fai? "...

Sono stato assunto come informatico presso una amministrazione pubblica.

Anche se, ovviamente, mi fanno fare altro.

..."sei molto disponibile"...

openHAB è un giocattolo che mi è piaciuto fin da subito... anche se, quando non ce verso

di farlo andare, mi irrita da matti e mi ci incaponisco.

 

Inserita:

io impiegato tecnico preso una ditta di impianti elettrici.

passione per musica, elettronica, e nel tempo libero mi sono realizzato  l'impianto di casa domotico.. 

siccome l'appetito vien mangiando... mi è balenata l'idea di interfacciare il tutto con openHab.

Una cosa simile la vende anche la DUEMMEGI si tratta di HSYCO ma costa un botto....

2 anni fà ho provato ad utilizzarlo per un altro lavoro (sempre con DUEMMEGI serie contatto) e guardando la scheda di HSYCO mi sembrava il prodotto BANANAPI (simile e raspberrypi) ma più evoluto... con s.o. linux o simile ed il  software di programmazione basato su Python... 

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

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




×
×
  • Crea nuovo/a...