PanStamp: Unterschied zwischen den Versionen

Aus FHEMWiki
(Formatierung überarbeitet; kleinere Korrekturen; Kategorisierung)
Zeile 1: Zeile 1:
{{Baustelle}}
{{Baustelle}}


= panStamps =
[http://www.panstamp.com/home PanStamps] sind [[Arduino]] Clones, die ein CC1101 Funkmodul beinhalten. Mit ihnen lassen sich Sensoren und Aktoren drahtlos an FHEM anbinden. Sie lassen sich genau wie Arduinos über die Ardunio IDE oder mit dem ino Kommandozeilen Binary programmieren.
PanStamps [http://www.panstamp.com/home)] sind kleine Arduinos mit On-Board CC1101 Funkmodul. Mit ihnen lassen sich eigene Sensoren und Aktoren drahtlos an FHEM anbinden. Sie lassen sich genau so wie Arduinos z.B. über die Ardunio IDE oder mit dem ino kommandozeilen binary programmieren.


Der panStamp software Stack unterstützt einen stromsparenden Power-Down- oder Sleep- Mode für batteriebetriebene Sensoren aus dem diese dann nur zur eigentlichen Messung und Übertragung "aufwachen".
Der panStamp Software Stack unterstützt einen stromsparenden Power-Down- oder Sleep-Modus für batteriebetriebene Sensoren, aus dem diese dann nur zur eigentlichen Messung und Übertragung "aufwachen".


Zur Kommunikation in einem panStamp Netzwerk dient das SWAP Protokoll [http://code.google.com/p/panstamp/wiki/SWAP].
Zur Kommunikation in einem panStamp Netzwerk dient das ''Simple Wireless Abstract Protocol'' ([http://code.google.com/p/panstamp/wiki/SWAP SWAP]).


= SWAP =
== Simple Wireless Abstract Protocol (SWAP) ==
Alle Kommunikation im SWAP Protokoll ist Register basiert und erfolgt mit Nachrichten um diese Register abzfuagen, zu setzen und deren Inhalt zu senden. Alle Register lassen sich lesen, manche auch beschreiben.
Die komplette SWAP- Kommunikation ist registerbasiert und erfolgt mit Nachrichten um diese Register abzufragen, zu setzen und deren Inhalt zu senden. Alle Register lassen sich lesen, manche auch beschreiben.


Jeder panStamp stellt 11 System Register (00-0A) [http://code.google.com/p/panstamp/wiki/SWAPregisters] und beliebig viele Sketch abängige User Register (0B-)bereit. Die Beschreibung der jeweils von einem Sketch bereitgestellten User Register erfolgt in Device Description Files die in .../FHEM/lib/SWAP zu finden sind. Die Identifikation der Art eines panStamp und die Zuordnung zu einem bestimmten Device Description File erfolgt über den productCode der aus 'Hersteller'- und 'Produkt'- Id gebildet wird.
Jeder panStamp stellt elf Systemregister (00-0A) [http://code.google.com/p/panstamp/wiki/SWAPregisters] und beliebig viele sketchabängige Userregister (0B-)bereit. Die Beschreibung der jeweils von einem Sketch bereitgestellten Userregister erfolgt in ''Device Description Files'', die in .../FHEM/lib/SWAP zu finden sind. Die Identifikation der Art eines panStamp und die Zuordnung zu einem bestimmten Device Description File erfolgt über den productCode der aus ''Hersteller''- und ''Produkt''-Id gebildet wird.


In den System Registern steht z.b. der productCode, die Device Adresse und das Übtertragungsintervall. Konfigurierbare Register werden im EEPROM gesichert so das die Werte auch beim einem Neustart nicht verloren gehen. Meim aller ersten starten ist das EEPROM mit FF initialisiert und alle konfigurierbaren Register haben diesen wert. also z.b. die Adresse FF und das Intervall FFFF (zwischen 18 und 19 stunden).
In den Systemregistern steht z. B. der productCode, die Deviceadresse und das Übertragungsintervall. Konfigurierbare Register werden im EEPROM gesichert, so dass die Werte auch bei einem Neustart nicht verlorengehen. Beim ersten Starten eines panStamp ist das EEPROM mit FF initialisiert und alle konfigurierbaren Register haben diesen Wert, also z. B. die Adresse FF und das Intervall FFFF (zwischen 18 und 19 Stunden).


Die System-Register werden in der Device Detailansicht bei den InternalValues im oberen Bereich angezeigt und die User-Register als reading im unteren Bereich.
Die Systemregister werden in der Device Detailansicht bei den InternalValues im oberen Bereich angezeigt und die User-Register als reading im unteren Bereich.


Jeder panStamp durchläuft beim Start eine definierte Einschaltsequenz und überträgt als aller erstes seinen productCode. Batteriebetiebene panStamps warten jetzt 3 sekunden auf konfigurations Kommandos. Danach werden bestimmte System-Register und aktuelle Messwerte gesendet.
Jeder panStamp durchläuft beim Start eine definierte Einschaltsequenz und überträgt als erstes seinen productCode. Batteriebetriebene panStamps warten anschließend drei Sekunden auf Konfigurationskommandos. Danach werden bestimmte Systemregister und aktuelle Messwerte gesendet.


= FHEM integration =
== FHEM integration ==
== panStamp ==
=== Schnittstelle ===
Als Schnittstelle zwischen FHEM und einem panStamp Netzwerk dient entweder ein panStick mit aufgestecktem panStamp an einem USB port oder ein panStamp shield mit integriertem panStamp an einem Raspberry PI. Der so angebundene panStamp wird mit einem Modem-Sketch als RF Modem verwenden und über das FHEM Modul panStamp angesprochen. Hierzu ist in FHEM ein entsprechendes Device anzulegen:<pre>define panStick panStamp /dev/ttyUSBx@38400</pre>
Als Schnittstelle zwischen FHEM und einem panStamp Netzwerk dient entweder ein panStick (USB Stick mit aufgestecktem panStamp) oder ein panStamp Shield mit integriertem panStamp an einem Raspberry PI. Der so angebundene panStamp wird mit einem Modem-Sketch als RF Modem verwenden und über das FHEM Modul panStamp angesprochen. Hierzu ist in FHEM ein entsprechendes Device anzulegen: <code>define panStick panStamp /dev/ttyUSBx@38400</code>


Dieses panStamp Device versucht dann als erstes alle panStamps im Netz zu finden und per autocreate anzulegen.
Dieses panStamp Device versucht dann als erstes alle panStamps im Netz zu finden und per autocreate anzulegen.


==SWAP==
=== Protokoll ===
Das SWAP Modul ermöglicht die generische Integration beliebiger panStamp Sensoren und Aktoren in FHEM. Mit Hilfe der im jeweiligen Device Description File hinterlegten Beschreibung werden hierzu automatisch userReadings angelegt die neben den 'nakten' Register werten in hex auch 'menschenlesbare' readings der Sensorwerte erzeugen. Damit dies funktioniert muss das Attribut ProductCode korrekt gesetzt sein. Das geschieht normalerweise automatisch beim anlegen des Device.
[[Datei:SWAP_ 0000000100000005-detail.png|mini|hochkant=2.5|Readings]]
Das SWAP Modul ermöglicht die generische Integration beliebiger panStamp Sensoren und Aktoren in FHEM. Mit Hilfe der im jeweiligen Device Description File hinterlegten Beschreibung werden hierzu automatisch userReadings angelegt die neben den reinen Registerwerten in hex auch 'menschenlesbare' readings der Sensorwerte erzeugen. Damit dies funktioniert, muss das Attribut ProductCode korrekt gesetzt sein. Das geschieht normalerweise automatisch beim Anlegen des Device.


Hier Beispielhaft anhand eines BMP085 Temperatur- und Luftdrucksensors dargestellt:


Hier Beispielhaft anhand eines BMP085 Temperatur und Luftdruck Sensors dargestellt:
:<code>attr temppress userReadings voltage:0B-Voltage {hex(ReadingsVal($name,"0B-Voltage","0"))*0.001}, temperature:0C.0-Temperature {hex(ReadingsVal($name,"0C.0-Temperature","0"))*0.1-50}, pressure:0C.1-Pressure {hex(ReadingsVal($name,"0C.1-Pressure","0"))*0.01}, pressureNN:0C.1-Pressure {sprintf("%.2f",hex(ReadingsVal($name,"0C.1-Pressure","0"))*0.01 + AttrVal("global", "altitude", 0)/8.5)}</code>


<code>attr temppress userReadings voltage:0B-Voltage {hex(ReadingsVal($name,"0B-Voltage","0"))*0.001}, temperature:0C.0-Temperature {hex(ReadingsVal($name,"0C.0-Temperature","0"))*0.1-50}, pressure:0C.1-Pressure {hex(ReadingsVal($name,"0C.1-Pressure","0"))*0.01}, pressureNN:0C.1-Pressure {sprintf("%.2f",hex(ReadingsVal($name,"0C.1-Pressure","0"))*0.01 + AttrVal("global", "altitude", 0)/8.5)}</code>
[[Datei:SWAP_ 0000000100000005.png|mini|hochkant=2.5|Resultat eines stateFormat]]
[[Datei:SWAP_ 0000000100000005-detail.png]]
Aus diesen readings kann dann mit stateFormat die gewünschte Darstellung für die Raumübersicht erzeugt werden:


Aus diesen readings kann dann mit stateFormat die gewünschte darstellung für die Raumübersicht erzeugt werden:
:<code>attr temppress stateFormat {sprintf("%.1f",ReadingsVal($name,"temperature",0))."°C ".sprintf("%.1f",ReadingsVal($name,"pressureNN",0))."mbar"}</code>


<code>attr temppress stateFormat {sprintf("%.1f",ReadingsVal($name,"temperature",0))."°C ".sprintf("%.1f",ReadingsVal($name,"pressureNN",0))."mbar"}</code>
[[Datei:SWAP_ 0000000100000005.png]]


Sobald ein SWAP Device mit dem productCode korrekt angelegt wurde, können die Userregister bzw. alle Register aufgelistet werden:
get <device> regList
get <device> regListALL


Sobald ein SWAP Device mit dem productCode korrekt angelegt wurde kann man sich die User Register bzw. alle Register auflisten:  
und einzelne Register abgefragt und gesetzt werden:
<pre>get <device> regList</pre>
set <device> regGet <ID>
<pre>get <device> regListALL</pre>
set <device> regSet <ID> <value>
Für die Systemregister kann hierzu statt der RegisterID auch der Registername (siehe regListAll) verwendet werden.


und einzelne register abfragen und setzen:
=== Neue panStamps in Betrieb nehmen ===
<pre>set <device> regGet <ID></pre>
Neue panStamps sollten nur Einer nach dem Anderen in Betrieb genommen werden, da sie zuerst mit einer eindeutigen Device-Adresse (ungleich FF und grösser 01) versehen werden müssen. Bei batteriebetriebenen Sensoren sollte auch das Sendeintervall auf einen sinnvollen Wert gesetzt werden:
<pre>set <device> regSet <ID> <value></pre>
set <device> regSet 09 <device adresse als 2 stellige hex zahl>
Für die System Register kann hierzu statt der Register ID auch der Register Name (siehe regListAll) verwendet werden.
set <device> regSet 0A <intervall in sekunden als 4 stellige hex zahl>
Für Devices im Power-Down-Modus werden diese Kommandos in eine Warteschlange gestellt und übertragen, sobald das Device seine Initialisierungssequenz durchläuft. Hierzu ist nach Absetzen der Kommandos Reset zu drücken oder die Stromquelle erneut zu verbinden.


===Neue panStamps in Betrieb nehmen===
Das SWAP modul versucht, ein Device mit der default Adresse <code>FF</code> automatisch auf die erste freie Adresse im Bereich <code>F0</code>-<code>FE</code> zu ändern.
Neue panStamps sollten nur einer nach dem anderen in Betrieb genommen werden da sie zuerst mit einer eindeutigen Device-Adresse (ungleich FF und grösser 01) versehen werden müssen. Bei batteriebetriebenen Sensoren sollte man auch das Sendeintervall auf einen sinnvollen wert setzen:
<pre>set <device> regSet 09 <device adresse als 2 stellige hex zahl></pre>
<pre>set <device> regSet 0A <intervall in sekunden als 4 stellige hex zahl></pre>
Für Devices im Power-Down-Mode werden diese Kommandos in eine Warteschlange gestellt und übertragen sobald das Device seine Initialisierungssequenz durchläuft. Hierzu ist nach absetzen der Kommandos Reset zu drücken oder die Stromquelle erneut zu verbinden.


Das SWAP modul versucht ein Device mit der default Adresse <code>FF</code> automatisch auf die erste freie Adresse im Bereich <code>F0</code>-<code>FE</code> zu ändern.
Für batteriebetriebene Devices (genauer: Devices die den Power-Down-Modus unterstützen) wird das Default Sendeintervall von <code>FFFF</code> zu <code>038f</code> (900 Sekunden) geändert.


Für batteriebetriebene Devices (genauer: Devices die den Power-Down-Mode unterstützen) wird das default Sendeintervall von <code>FFFF</code> zu <code>038f</code> (900 Sekunden) geändert.
Automatisch gesetzte Werte sollten danach manuell auf die jeweilige Installation angepasst werden.


Automatisch gesetzten Werte sollten danach manuell auf die jeweilige Installation angepasst werden.
=== SWAP_XXXXXXXXXXXXXXXX ===
Besonders bei Aktoren ist eine engere FHEM-Integration sinnvoll, um FHEM Konzepte wie on/off/on-for-timer direkt abzubilden und nicht mehr nur auf die Registerebene und regSet und regGet Kommandos beschränkt zu sein.


==SWAP_XXXXXXXXXXXXXXXX==
Um per autocreate automatisch das passende Modul laden zu können, müssen diese Module nach dem Schema SWAP_XXXXXXXXXXXXXXXX.pm benannt sein wobei XXXXXXXXXXXXXXXX für den jeweiligen productCode steht.
Besonders bei Aktoren ist eine engere FHEM Integration sinnvoll um FHEM Konzepte wie on/off/on-for-timer direkt abzubilden und nicht mehr nur auf die register Ebene und regSet und regGet Kommandos beschränkt zu sein.


Um per autocreate automatisch das passende Modul laden zu können müssen diese Module nach dem Schema SWAP_XXXXXXXXXXXXXXXX.pm benannt sein wobei XXXXXXXXXXXXXXXX für den jeweiligen productCode steht.
=== SWAP_0000002200000003 ===
[[Datei:SWAP_0000002200000003.png|mini|rechts|hochkant=2.5|RGB LED Driver Board]]
Ein FHEM Modul für das modifizierte panStamp RGB LED Driver Board.  


===SWAP_0000002200000003===
Das Board unterstützt RGBW LEDs und lässt sich per Infrarot Fernbedienung, DMX Controller (z.&nbsp;B. als Unterputz Touchpanel) und FHEM bedienen.
Ein FHEM modul für das modifizierte panStamp RGB LED Driver Board.  


Das Board unterstürzt RGBW LEDs und lässt sich per Infrarot Fernbedienung, DMX Controller (z.b. als unterputz Touch Pannel) und FHEM bedienen.
Der Funktionsumfang wird in diesem [http://forum.fhem.de/index.php?t=msg&th=12487&goto=81923&rid=430#msg_81923 Forenthread] vorgestellt. Die Hardware für das Board wird [http://forum.fhem.de/index.php?t=msg&th=13890&start=0&rid=430 hier] im FHEM Forum vorgestellt und ein Prototyp ist [http://forum.fhem.de/index.php?t=msg&th=12487&goto=85777&rid=430#msg_85777 hier] zu sehen.


Der Funktionsumfang wird hier [http://forum.fhem.de/index.php?t=msg&th=12487&goto=81923&rid=430#msg_81923] vorgestellt. Die Hardware für das Board wird hier  [http://forum.fhem.de/index.php?t=msg&th=13890&start=0&rid=430] im FHEM Forum vorgestellt und ein prototyp ist hier zu sehen [http://forum.fhem.de/index.php?t=msg&th=12487&goto=85777&rid=430#msg_85777].
[[Datei:SWAP_0000002200000003.png]]


== Screenshots ==
<gallery>
<gallery>
File:SWAP_0000002200000003-internal.png|InternalValues
File:SWAP_0000002200000003-internal.png|InternalValues
Zeile 83: Zeile 81:


[[Kategorie:Other Components]]
[[Kategorie:Other Components]]
[[Kategorie:Hardware]]

Version vom 30. Juli 2013, 10:59 Uhr


Clock - Under Construction.svg An dieser Seite wird momentan noch gearbeitet.


PanStamps sind Arduino Clones, die ein CC1101 Funkmodul beinhalten. Mit ihnen lassen sich Sensoren und Aktoren drahtlos an FHEM anbinden. Sie lassen sich genau wie Arduinos über die Ardunio IDE oder mit dem ino Kommandozeilen Binary programmieren.

Der panStamp Software Stack unterstützt einen stromsparenden Power-Down- oder Sleep-Modus für batteriebetriebene Sensoren, aus dem diese dann nur zur eigentlichen Messung und Übertragung "aufwachen".

Zur Kommunikation in einem panStamp Netzwerk dient das Simple Wireless Abstract Protocol (SWAP).

Simple Wireless Abstract Protocol (SWAP)

Die komplette SWAP- Kommunikation ist registerbasiert und erfolgt mit Nachrichten um diese Register abzufragen, zu setzen und deren Inhalt zu senden. Alle Register lassen sich lesen, manche auch beschreiben.

Jeder panStamp stellt elf Systemregister (00-0A) [1] und beliebig viele sketchabängige Userregister (0B-)bereit. Die Beschreibung der jeweils von einem Sketch bereitgestellten Userregister erfolgt in Device Description Files, die in .../FHEM/lib/SWAP zu finden sind. Die Identifikation der Art eines panStamp und die Zuordnung zu einem bestimmten Device Description File erfolgt über den productCode der aus Hersteller- und Produkt-Id gebildet wird.

In den Systemregistern steht z. B. der productCode, die Deviceadresse und das Übertragungsintervall. Konfigurierbare Register werden im EEPROM gesichert, so dass die Werte auch bei einem Neustart nicht verlorengehen. Beim ersten Starten eines panStamp ist das EEPROM mit FF initialisiert und alle konfigurierbaren Register haben diesen Wert, also z. B. die Adresse FF und das Intervall FFFF (zwischen 18 und 19 Stunden).

Die Systemregister werden in der Device Detailansicht bei den InternalValues im oberen Bereich angezeigt und die User-Register als reading im unteren Bereich.

Jeder panStamp durchläuft beim Start eine definierte Einschaltsequenz und überträgt als erstes seinen productCode. Batteriebetriebene panStamps warten anschließend drei Sekunden auf Konfigurationskommandos. Danach werden bestimmte Systemregister und aktuelle Messwerte gesendet.

FHEM integration

Schnittstelle

Als Schnittstelle zwischen FHEM und einem panStamp Netzwerk dient entweder ein panStick (USB Stick mit aufgestecktem panStamp) oder ein panStamp Shield mit integriertem panStamp an einem Raspberry PI. Der so angebundene panStamp wird mit einem Modem-Sketch als RF Modem verwenden und über das FHEM Modul panStamp angesprochen. Hierzu ist in FHEM ein entsprechendes Device anzulegen: define panStick panStamp /dev/ttyUSBx@38400

Dieses panStamp Device versucht dann als erstes alle panStamps im Netz zu finden und per autocreate anzulegen.

Protokoll

Readings

Das SWAP Modul ermöglicht die generische Integration beliebiger panStamp Sensoren und Aktoren in FHEM. Mit Hilfe der im jeweiligen Device Description File hinterlegten Beschreibung werden hierzu automatisch userReadings angelegt die neben den reinen Registerwerten in hex auch 'menschenlesbare' readings der Sensorwerte erzeugen. Damit dies funktioniert, muss das Attribut ProductCode korrekt gesetzt sein. Das geschieht normalerweise automatisch beim Anlegen des Device.

Hier Beispielhaft anhand eines BMP085 Temperatur- und Luftdrucksensors dargestellt:

attr temppress userReadings voltage:0B-Voltage {hex(ReadingsVal($name,"0B-Voltage","0"))*0.001}, temperature:0C.0-Temperature {hex(ReadingsVal($name,"0C.0-Temperature","0"))*0.1-50}, pressure:0C.1-Pressure {hex(ReadingsVal($name,"0C.1-Pressure","0"))*0.01}, pressureNN:0C.1-Pressure {sprintf("%.2f",hex(ReadingsVal($name,"0C.1-Pressure","0"))*0.01 + AttrVal("global", "altitude", 0)/8.5)}
Resultat eines stateFormat

Aus diesen readings kann dann mit stateFormat die gewünschte Darstellung für die Raumübersicht erzeugt werden:

attr temppress stateFormat {sprintf("%.1f",ReadingsVal($name,"temperature",0))."°C ".sprintf("%.1f",ReadingsVal($name,"pressureNN",0))."mbar"}


Sobald ein SWAP Device mit dem productCode korrekt angelegt wurde, können die Userregister bzw. alle Register aufgelistet werden:

get <device> regList
get <device> regListALL

und einzelne Register abgefragt und gesetzt werden:

set <device> regGet <ID>
set <device> regSet <ID> <value>

Für die Systemregister kann hierzu statt der RegisterID auch der Registername (siehe regListAll) verwendet werden.

Neue panStamps in Betrieb nehmen

Neue panStamps sollten nur Einer nach dem Anderen in Betrieb genommen werden, da sie zuerst mit einer eindeutigen Device-Adresse (ungleich FF und grösser 01) versehen werden müssen. Bei batteriebetriebenen Sensoren sollte auch das Sendeintervall auf einen sinnvollen Wert gesetzt werden:

set <device> regSet 09 <device adresse als 2 stellige hex zahl>
set <device> regSet 0A <intervall in sekunden als 4 stellige hex zahl>

Für Devices im Power-Down-Modus werden diese Kommandos in eine Warteschlange gestellt und übertragen, sobald das Device seine Initialisierungssequenz durchläuft. Hierzu ist nach Absetzen der Kommandos Reset zu drücken oder die Stromquelle erneut zu verbinden.

Das SWAP modul versucht, ein Device mit der default Adresse FF automatisch auf die erste freie Adresse im Bereich F0-FE zu ändern.

Für batteriebetriebene Devices (genauer: Devices die den Power-Down-Modus unterstützen) wird das Default Sendeintervall von FFFF zu 038f (900 Sekunden) geändert.

Automatisch gesetzte Werte sollten danach manuell auf die jeweilige Installation angepasst werden.

SWAP_XXXXXXXXXXXXXXXX

Besonders bei Aktoren ist eine engere FHEM-Integration sinnvoll, um FHEM Konzepte wie on/off/on-for-timer direkt abzubilden und nicht mehr nur auf die Registerebene und regSet und regGet Kommandos beschränkt zu sein.

Um per autocreate automatisch das passende Modul laden zu können, müssen diese Module nach dem Schema SWAP_XXXXXXXXXXXXXXXX.pm benannt sein wobei XXXXXXXXXXXXXXXX für den jeweiligen productCode steht.

SWAP_0000002200000003

RGB LED Driver Board

Ein FHEM Modul für das modifizierte panStamp RGB LED Driver Board.

Das Board unterstützt RGBW LEDs und lässt sich per Infrarot Fernbedienung, DMX Controller (z. B. als Unterputz Touchpanel) und FHEM bedienen.

Der Funktionsumfang wird in diesem Forenthread vorgestellt. Die Hardware für das Board wird hier im FHEM Forum vorgestellt und ein Prototyp ist hier zu sehen.


Screenshots