Jo.. det kommer dokumenteras på mios wiki så småningom.

Är det någon som hittat en lämplig [billig] låda för nano? Två av mina sensorer skall dessutom vara utomhus [i regnskydd] vilket komplicerar saken ytterligare.
 
hek skrev:
Sitter just nu och funderar på hur protokollet skall se ut som sensorerna skickar sin information till Veran med.
Då jag jobbar med integrationsfrågor och väldigt mycket kring MQ så kan jag ju inte annat än fundera på att använda det och det fina är det finns något som heter MQTT ("MQ Telemetry Transport, MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol." http://mqtt.org/ ) Det vore kanske perfekt protokoll ...
MQTT är ursprungligen startat av IBM med numera fristående även om IBM är starkt inblandade.
Verkar också finnas en del för Arduino.

Lite länkar som jag dök på:
MQTT Client for Arduino: http://knolleary.net/arduino-client-for-mqtt/
MQTT Server på OpenWRT: http://webworxshop.com/2012/11/03/tiny-mqtt-broker-with-openwrt
IBM RedBook, Arduino+MQTT: http://www.redbooks.ibm.com/redpapers/pdfs/redp4929.pdf
IBM RedBook, generellt MQTT: http://www.redbooks.ibm.com/redbooks/pdfs/sg248054.pdf
Exempel: http://www.willowdesign.info/blog/mqtt-on-arduino/

Får nog skaffa lite grejer och testa med... :)
 
Anledningen till att Uno inte funkar är att den inte har någon riktig usb port. Senaste arduino Leonardo har det.
 
@jocke4u
MQTT funkar säkert finfint över tcp (Wifi-shield alt Ethernet-shield). Men det funkar inte över dom enklare radiokorten jag tänkte använda. En wifi-shield kostar ju ca $50 vilket gör sensorerna lite för dyra.

Någon verkar dock ha skapat en MQTT klient i Lua dock.
https://github.com/geekscape/mqtt_lua

Tycker dock att du skall fortsätta labba lite. Speciellt om du tänker köra Wifi.

@sebsv211
Det är väl någon typ av seriellport (via USB). Veran verkar dock bäst supporta chipset från FDTI så pluggar man in något annat får man trixa med ser2net. Kunde faktiskt kommunicera med min Uno (dyker upp som /dev/ttyACM0) om jag körde följande i shellen Men det blir mycket krångligare för "normala" användare:

ser2net -C 5000:raw:0:/dev/ttyACM0:38400
 
En liten update:

Har fått projektplats på mios (inget publicerat ännu) och skrivit en plugin som (i teorin) skall kunna skapa upp enheter.
Men jag har kört fast lite med RF24 biblioteket för Arduino. Man verkar bara kunna skicka max 32 bytes i ett meddelande.

Min tanke var att dundra över lite mer data från sensorn när den presenterar sig och skickar sensordata för att minimera arbetet med vera pluginen (sensorn skickar själv vad den är för något och vilken Vera variabel den vill sätta).

Hmm orkar man skiva kod för att splitta upp och sammanfoga större meddelanden(hittar inget färdigt!)?

Annars måste jag nog tänka om lite och skicka tillbaka den på ritbordet.
 
hek skrev:
En liten update:

Har fått projektplats på mios (inget publicerat ännu) och skrivit en plugin som (i teorin) skall kunna skapa upp enheter.
Men jag har kört fast lite med RF24 biblioteket för Arduino. Man verkar bara kunna skicka max 32 bytes i ett meddelande.

Min tanke var att dundra över lite mer data från sensorn när den presenterar sig och skickar sensordata för att minimera arbetet med vera pluginen (sensorn skickar själv vad den är för något och vilken Vera variabel den vill sätta).

Hmm orkar man skiva kod för att splitta upp och sammanfoga större meddelanden(hittar inget färdigt!)?

Annars måste jag nog tänka om lite och skicka tillbaka den på ritbordet.
Vad är det för mer data du vill att den skall skicka över då???
 
För en temperatursensor skulle jag behöva skicka följande när den presenterar sig:
<id>;<childId>;device_file=D_TemperatureSensor1.xml\n

Och när den skicka sensordata gör den det på följande sätt:
<id>;<childId>;CurrentTemperature=33.2\n

Detta underlättar på vera -sidan eftersom den då bara kan sätta variabeln eller skapa enheten utan att känna till vad den kommunicerar med.

Alternativet är att sätta upp en mappning på vera -sidan (vilken gör att man kan korta ner snacket) och då måste man dessutom uppdatera pluginen varje gång en ny sensor skall stödjas.
 
Du skrev att du ska skicka följande
<id>;<childId>;CurrentTemperature=33.2\n
Kan du inte skicka förkortade benämningar och mätvärden binärt?
En enda byte/tecken kan ju representera +127 och om du vill ha decimalen med kan du ju sända två byte (en för heltalet och en för decimalen). Kan inte gå åt många rader kod för att "packa upp" detta på mottagande sida.
 
  • Gilla
Bosse_A
  • Laddar…
at.png

Nu ni!

Första sensor-barnet har skapats upp automatiskt av min plugin genom att sensorn presenterar sig over-the-air. Vera delen har ingen kunskap om vad den kommunicerar med vilken gör den delen mycket lättunderhållen.

Gällande data protokoll blev det ett mellanting.
En Arduino med radio skickar över en presentation av vilka sensorer den har och vilka variabler den kommer uppdatera (med serviceid). Där anger även ett "kortnamn" för variablerna.

737889996032;0;0;D_TemperatureSensor1
737889996032;0;1;t;urn:upnp-org:serviceId:TemperatureSensor1;CurrentTemperature
Det innebär att senare när sensorn skickar över själva sensordatan kan den oftast få plats i ett 32 bytes meddelande.

737889996032;0;2;t=24.4
Det var länge sedan man använde c++. Men det kommer tillbaka så sakteliga....Ett fragment av ett medddelande definieras så här:

[SUB]typedef struct {
uint64_t radioId; // 8 bytes
uint8_t childId; // 1 byte. Up to 256 child sensors supported
uint8_t fragmentNumber : 4; // 4 bits. Fragment number. (We'll only use fragment 0-7)
uint8_t fragmentCount : 4; // 4 bits. Total number of fragments in this message. 1-16. Where 0 mean 1 fragment.
uint8_t messageType : 2; // 2 bits. 0=Sensor Presentation, 1=Variable presentation, 2=Set Variable, 3=Call action
uint8_t messageNumber : 6; // Increment for each message to avoid wrongful reassemble of different messages (0-64)
char data[maxFragmentDataLength]; // Each fragment can transfer 21 characters.
} fragment_s;[/SUB]


Var en hel del meck men att få till "hacka-upp-långa-meddelande-i små-bitar-och-skicka" och på andra sidan "ta-emot-små-bitar-och-sammanfoga" delen. Allt detta har jag wrappat upp i ett Arduino-bibliotek så man slipper se det när man skriver kod för en arduinosensorer framöver.

Nu återstår bara att rensa upp lite ytterligare i koden och dokumenteras innan första versionen släpps på mios versionhanterare och plugin-wiki.
 
Redigerat:
  • Gilla
pb76 och 3 till
  • Laddar…
Kul att det går åt rätt håll :)

Hur tänkte du driva sensorerna. Via ext power eller batteri, om det e batteri, har du någon uppfattning
hur länge dom håller i så fall. För jämför man me Fibaros universalsensor så håller ju inte ett 9volts batteri direkt
länge.

Så nu e det nog dags å börja beställa hem lite grejer å hänga på detta projekt ju :)
 
Batteritid beror lite på vad det är för senor man vill bygga.Normalt stänger man ju av radio-chippet när man inte använder den. Tror också att visa sensorer kan trigga ett interrupt så man även kan låta andruinon gå ner i sovläge. Då räcker batterierna i åravis enligt "internet".

Jag kommer dock låta rörelsesensorerna i takfoten vara fast inkopplade eftersom jag har 24V där redan. Har investerat i dessa:
http://www.aliexpress.com/item/10pc...tep-down-module-LM2596-voltage/912126670.html

Man skall nog också låta dom gå på 3V (2*1,5V batterier) p.g.a radiochippets behov och att man då slipper en del förluster vid omvandlingen. Men här är jag ingen expert utan får nog förkovra mig ytterligare innan jag kan säga något med säkerhet.
 
Är väldigt nyfiken när du kommer till Fuktgivaren för jorden.. Där ser jag ett stort behöv just nu då man glömmer av
vissa grejer hemma här i bland :)
 
  • Gilla
pb76
  • Laddar…
  • Gilla
martinholmin
  • Laddar…
Va kul..

Kommer du även visa hur du kopplat också??
 
Yes,

Fast nu måste jag nog sova lite. Det är ju måndag imorgon!
 
  • Gilla
Augie och 1 till
  • Laddar…
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.