EDIT: Allereerst bedankt voor de tijd en moeite die genomen wordt om inhoudelijk te reageren in dit topic! Aan de hand van de reacties van Sprite_tm, eppie en Springuin heb ik de TS even herschreven. De oude TS is hieronder te lezen.
Probleemstelling
De informatie die door microcontrollers met sensoren wordt verzameld dient over het GSM (GPRS) netwerk verstuurd te worden naar het server over het MQTT protocol.
Concreet voorbeeld: Een zelf ontwikkelde regenmeter stuurt iedere 2 uur het aantal mm neerslag op, of een sensor die de waterhoogte meet in een rivier stuurt deze waterhoogte door.
We willen een generieke oplossing die zowel kan worden toegepast tijdens het prototyping (met rpi’s en arduino’s) als tijdens verder ontwikkelde producten (specifiekere microcontrollers). Het stroomverbruik van de gekozen oplossing is ook erg belangrijk.
Waarom MQTT?
MQTT is een machine-to-machine connectiviteits protocol dat verloopt over TCP/IP. Het is ontwikkeld voor extreem lichtgewicht publish/subscribe berichten verkeer. Hierdoor is het nuttig om te gebruiken voor afgelegen locaties waar het dataverkeer minimaal moet worden gehouden of het dataverkeer erg kostbaar is. (Bron http://mqtt.org/ )
Wij willen dit protocol gebruiken omdat de sensoren ook op plaatsen ingezet gaan worden waar het dataverkeer erg kostbaar zal zijn.
GSM Modems
Er worden M2M GMS modems aangeboden met verschillende interfaces: RS232, USB en LAN. De meest geschikte interface in combinatie met microcontrollers is RS232 omdat dit een seriële verbinding is die vanaf bijna iedere microcontroller gemaakt kan worden. Met deze interface kan een PPP-verbinding opgezet worden naar de modem, hiervoor is wel vaak een library nodig aangezien dit vrij uitgebreid is. Een andere mogelijkheid die geen library nodig heeft is het versturen van AT-commando’s naar de modem, hiervoor is een modem met ingebouwde TCP stack nodig.
Er zijn ook modems waar je je eigen applicatie/script op kan draaien zoals een J2ME applicatie voor modems op basis van gemalto tc65i of ehs5/6 chipset. Er zijn ook o.a. Telit modems waarop het mogelijk is om een eigen python script te draaien.
Concrete vraag: Indien je gebruikt maakt van zo’n modem met eigen script, lees je dan de seriële datastroom uit en gebruik je vervolgens in dit script dan de AT-commands om deze data te versturen?
GPRS shield/module
De goedkoopste mogelijkheid is de bestaande microcontroller die de sensor uitleest uit te breiden met een GRPS module. Hierbij werk je, net als bij de GSM modems zonder eigen script, door middel van AT commando’s uit te voeren binnen je script dat draait op de microcontrollers dat de sensoren uitleest.
Smartphone
Er zijn android smartphones op de markt voor ruim onder de € 100, die eigenlijk alle functionaliteiten bevatten die je wilt hebben. Door de microcontroller d.m.v RS232 te verbinden met de smartphone (https://github.com/mik3y/usb-serial-for-android) kan je een simpele Android App maken die de data van je microcontroller ontvangt, en vervolgens over MQTT communiceert naar de server. Het nadeel is hier dat je (binnen een gewone applicatie) niet zoveel controle hebt over de verbinding als wanneer je AT-commands gebruikt. Normaal wordt een data-verbinding dan open gehouden volgens mij? Heeft dit nadelen t.o.v AT commands waar je steeds de verbinding opent en sluit?
Tussen de verschillende mogelijkheden moeten worden geëvalueerd op de volgende aspecten: stabiliteit, aanschafkosten, stroomverbruik, dataverbruik, eenvoud implementatie microcontrollers.
De eenvoud gaat dus vooral om het implementen van het uiteindelijk systeem aan verschillende sensoren, niet zozeer het eenmalig opzetten van het systeem. Wat zijn jullie gedachten/aanbevelingen ten aanzien van bovenstaande punten?
Oude TS:
Probleemstelling
De informatie die door microcontrollers met sensoren wordt verzameld dient over het GSM (GPRS) netwerk verstuurd te worden naar het server over het MQTT protocol.
Concreet voorbeeld: Een zelf ontwikkelde regenmeter stuurt iedere 2 uur het aantal mm neerslag op, of een sensor die de waterhoogte meet in een rivier stuurt deze waterhoogte door.
We willen een generieke oplossing die zowel kan worden toegepast tijdens het prototyping (met rpi’s en arduino’s) als tijdens verder ontwikkelde producten (specifiekere microcontrollers). Het stroomverbruik van de gekozen oplossing is ook erg belangrijk.
Waarom MQTT?
MQTT is een machine-to-machine connectiviteits protocol dat verloopt over TCP/IP. Het is ontwikkeld voor extreem lichtgewicht publish/subscribe berichten verkeer. Hierdoor is het nuttig om te gebruiken voor afgelegen locaties waar het dataverkeer minimaal moet worden gehouden of het dataverkeer erg kostbaar is. (Bron http://mqtt.org/ )
Wij willen dit protocol gebruiken omdat de sensoren ook op plaatsen ingezet gaan worden waar het dataverkeer erg kostbaar zal zijn.
GSM Modems
Er worden M2M GMS modems aangeboden met verschillende interfaces: RS232, USB en LAN. De meest geschikte interface in combinatie met microcontrollers is RS232 omdat dit een seriële verbinding is die vanaf bijna iedere microcontroller gemaakt kan worden. Met deze interface kan een PPP-verbinding opgezet worden naar de modem, hiervoor is wel vaak een library nodig aangezien dit vrij uitgebreid is. Een andere mogelijkheid die geen library nodig heeft is het versturen van AT-commando’s naar de modem, hiervoor is een modem met ingebouwde TCP stack nodig.
Er zijn ook modems waar je je eigen applicatie/script op kan draaien zoals een J2ME applicatie voor modems op basis van gemalto tc65i of ehs5/6 chipset. Er zijn ook o.a. Telit modems waarop het mogelijk is om een eigen python script te draaien.
Concrete vraag: Indien je gebruikt maakt van zo’n modem met eigen script, lees je dan de seriële datastroom uit en gebruik je vervolgens in dit script dan de AT-commands om deze data te versturen?
GPRS shield/module
De goedkoopste mogelijkheid is de bestaande microcontroller die de sensor uitleest uit te breiden met een GRPS module. Hierbij werk je, net als bij de GSM modems zonder eigen script, door middel van AT commando’s uit te voeren binnen je script dat draait op de microcontrollers dat de sensoren uitleest.
Smartphone
Er zijn android smartphones op de markt voor ruim onder de € 100, die eigenlijk alle functionaliteiten bevatten die je wilt hebben. Door de microcontroller d.m.v RS232 te verbinden met de smartphone (https://github.com/mik3y/usb-serial-for-android) kan je een simpele Android App maken die de data van je microcontroller ontvangt, en vervolgens over MQTT communiceert naar de server. Het nadeel is hier dat je (binnen een gewone applicatie) niet zoveel controle hebt over de verbinding als wanneer je AT-commands gebruikt. Normaal wordt een data-verbinding dan open gehouden volgens mij? Heeft dit nadelen t.o.v AT commands waar je steeds de verbinding opent en sluit?
Tussen de verschillende mogelijkheden moeten worden geëvalueerd op de volgende aspecten: stabiliteit, aanschafkosten, stroomverbruik, dataverbruik, eenvoud implementatie microcontrollers.
De eenvoud gaat dus vooral om het implementen van het uiteindelijk systeem aan verschillende sensoren, niet zozeer het eenmalig opzetten van het systeem. Wat zijn jullie gedachten/aanbevelingen ten aanzien van bovenstaande punten?
Oude TS:
edit:
Beste Tweakers,
Ik wil graag gebruik maken van de expertise die er binnen dit forum is om mij het een en ander te verduidelijken over het gebruik van GSM (GRPS/EDGE) Modems die worden gekoppeld aan een sensor in combinatie met MQTT (http://mqtt.org/).
Als ik het goed begrijp werkt MQTT over het normale TCP protocol en het zou dus geen probleem moeten zijn om dit te combineren met een GSM modem. Nou zijn deze modems er vaak in 3 uitvoeringen: USB, RS232 en LAN.
Bij een USB modem moeten er (zover ik het begrijp) drivers worden geinstalleerd. Zodra dit is gedaan heeft je device gewoon een internetverbinding en hoef je hier dus in je programmeercode geen rekening mee te houden.
Bij een RS323 werk je als ik het goed begrijp met AT commands. Je hoeft hier dan geen drivers te installeren (dus je kan het vanaf ieder device gebruiken) maar je code wordt wel ingewikkelder? Ik kan weinig vinden over AT codes voor MQTT, vragen die hierover staan worden niet direct beantwoord maar vaak wordt er verwezen naar andere middleware die dan dus ook niet op ieder apparaat gaat werken (http://stackoverflow.com/...t-using-gprs-sim900-modem).
De GSM modem die met LAN wordt verbonden lijkt mij de eenvoudigste en meest universele optie. Er komt gewoon een LAN verbinding tot stand tussen je sensor device en de modem, je merkt er dan helemaal niets van dat je via een GSM modem verbonden bent?
Het is erg belangrijk om zo weinig mogelijk dataverkeer te genereren (vandaar ook het MQTT protocol). Zit er nog verschil tussen de typen modems met betrekking hiertot? Mij lijkt dat je met een RS323 modem d.m.v AT commands dus zelf de verbinding steeds opzet en afsluit, terwijl bij LAN bijvoorbeeld de modem dit allemaal zelf beheert?
Graag hoor ik of mijn bovenstaande aannames kloppen, en eventuele adviezen/ervaringen bij het koppelen van sensoren met modems over MQTT.
Beste Tweakers,
Ik wil graag gebruik maken van de expertise die er binnen dit forum is om mij het een en ander te verduidelijken over het gebruik van GSM (GRPS/EDGE) Modems die worden gekoppeld aan een sensor in combinatie met MQTT (http://mqtt.org/).
Als ik het goed begrijp werkt MQTT over het normale TCP protocol en het zou dus geen probleem moeten zijn om dit te combineren met een GSM modem. Nou zijn deze modems er vaak in 3 uitvoeringen: USB, RS232 en LAN.
Bij een USB modem moeten er (zover ik het begrijp) drivers worden geinstalleerd. Zodra dit is gedaan heeft je device gewoon een internetverbinding en hoef je hier dus in je programmeercode geen rekening mee te houden.
Bij een RS323 werk je als ik het goed begrijp met AT commands. Je hoeft hier dan geen drivers te installeren (dus je kan het vanaf ieder device gebruiken) maar je code wordt wel ingewikkelder? Ik kan weinig vinden over AT codes voor MQTT, vragen die hierover staan worden niet direct beantwoord maar vaak wordt er verwezen naar andere middleware die dan dus ook niet op ieder apparaat gaat werken (http://stackoverflow.com/...t-using-gprs-sim900-modem).
De GSM modem die met LAN wordt verbonden lijkt mij de eenvoudigste en meest universele optie. Er komt gewoon een LAN verbinding tot stand tussen je sensor device en de modem, je merkt er dan helemaal niets van dat je via een GSM modem verbonden bent?
Het is erg belangrijk om zo weinig mogelijk dataverkeer te genereren (vandaar ook het MQTT protocol). Zit er nog verschil tussen de typen modems met betrekking hiertot? Mij lijkt dat je met een RS323 modem d.m.v AT commands dus zelf de verbinding steeds opzet en afsluit, terwijl bij LAN bijvoorbeeld de modem dit allemaal zelf beheert?
Graag hoor ik of mijn bovenstaande aannames kloppen, en eventuele adviezen/ervaringen bij het koppelen van sensoren met modems over MQTT.
[ Voor 51% gewijzigd door Qzar op 30-08-2014 14:14 ]