panStamp support

Begonnen von justme1968, 24 April 2013, 21:35:25

Vorheriges Thema - Nächstes Thema

justme1968

hallo norbert,

hier war das Wetter (leider?) besser. und auch sonst gab es 1000 andere dinge und ich komme seit tagen nicht zu dem was ich mir vorgenommen habe.

eigentlich wollte ich inzwischen zumindest deine lib probehalber aus fhem angesteuert haben. hoffentlich bald wirklich mehr als nur ein kurzes überfligen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

so... langsam komme ich doch zu etwas aber bevor ich richtig angefangen habe bin ich prompt darüber gestolpert das du die reihenfolge der register geändert hast :)

du musst ein bischen aufpassen mit den device xml files. am besten besorgst du dir bei daniel berenguer eine eigene developer id. wenn du meine id mit deinem namen verwendest finden die fhem module die device files nicht mehr weil der link über die id geht das file aber in einem directory mit dem namen gesucht wird.

falls demnächst die neuen panstamp module mit mehr speicher rauskommen überlege ich ob man nicht eine kompimierte version des device files mit in den sketch packt und so dafür sorgt das es keine inkonsistenzen durch nicht passende lokale files gibt.

ansonsten hab ich inzwischen die erfahrung gemacht das es viel handlicher ist für die konfiguration meherere swap register zu verwenden und nicht alles in ein register zu quetschen weil sich einzelne endpoints nicht unabhängig von einander setzen lassen ohne vorher das ganze register abzufragen. meine fhem module machen das zwar inzwischen halbwegs automatisch aber wenn es nicht aufs letzte byte ankommt und die endpoints nicht auch logsch etwas miteinander zu tun haben ist es anders einfacher.


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

doppelt gepostet ...
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ntruchsess

Zitat von: justme1968 schrieb am Mo, 24 Juni 2013 22:17am besten besorgst du dir bei daniel berenguer eine eigene developer id.
Das mit der nötigen eindeutigkeit der Developer-ids war mir bis vor kurzem etwas unklar, ich frage mal bei Daniel an. Meine perl portierung der swap-library möchte ich ja eh zu seinem panstamp-projekt contributen.

SwapStream habe ich gestern abend noch ein bischen refactored, die klasse wird jetzt im registerValueChanged-callback aufgerufen, nicht mehr in swapPacketReceived. Das ist der logisch richtigere Platz. Die Arduino-library hat ein kleineres Update erfahren (eigene Packet-klasse, damit die destAddress in Status-paketen gesetzt werden kann).

Gruß,

Norbert
while (!asleep()) {sheep++};

ntruchsess

Appropos Speicherbedarf: ich habe den (noch unbestätigten) Eindruck, dass die Korruption-probleme bei etwas höheren Datenraten von Speichermangel hervorgerufen werden - die cc-pakete kommen ziemlich unkontrolliert interruptgesteuert in dynamisch allokiertem Speicher rein. Wenn da ein paar zuviel kommen, dann überschreiben die (vom oberen Ende her) die statischen Variablen (und damit auch den Sende- und Empfangspuffer des SwapStream). Mir ist noch nicht ganz klar, wie man das geziehlt untersuchen bzw. unterbinden kann außer das man das cc1101-modul bei Speichermangel abschaltet, dann aber im Gegenzug auch keine Daten mehr versenden kann. Debuggen auf dem PanStamp ist ja eher schwierig, weil das Serial-interface auch interrupt-gesteuert läuft und es dauernd Interrupt-überschneidungen mit dem cc1101-interrupts gibt. Im modem-sketch wird zu jeder Serial-kommunikation immer der cc1101-interrupt geziehlt abgeschaltet - wenn ich das richtig sehe ist der dazu nötige code offenbar kein Teil der öffendlichen API?

Gruß,

Norbert
while (!asleep()) {sheep++};

justme1968

ich hatte auch schon probleme mit den interupts bzw. in interupt handler zu viel zu tun. es reichen schon einige serial.print. wenn ich das auslagere in in der loop mache funktioniert es aber. ich weiss also nicht ob es wirklich der speicher ist. ich habe auch keine erfahrung mit embeddet systemem was das angeht. aber daniel hat vielleicht eine idee.

die nächste version der panstamps wird doppelt so wie speicher haben. das hilft eventuell.

daniel hat gestern schon einen link auf deine git repository auf die panstamp wiki seite gestellt.

mehr wenn ich endlich dazu komme mehr als test.pl aufzurufen.

gruss
  andre

ach ja. noch was: ich habe bei meiner prel version progleme mit dem 'r' am ende von '~=s/.../gr' das du an ein paar stellen verwendest. ich hab auch keine doku dazu gefunden.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ntruchsess

Zitat von: justme1968 schrieb am Di, 25 Juni 2013 12:48daniel hat gestern schon einen link auf deine git repository auf die panstamp wiki seite gestellt.
schick :-)

Zitatmehr wenn ich endlich dazu komme mehr als test.pl aufzurufen.
nimm lieber mal die swapstream.pl, die ich (gestern?) mit committed habe ;-)

Zitatprogleme mit dem 'r' am ende von '~=s/.../gr' [...] ich hab auch keine doku dazu gefunden.

Im Regex-tutorial auf perldoc.perl.org findet sich:
'If you don't want s/// to change your original variable you can use the non-destructive substitute modifier, s///r. This changes the behavior so that s///r returns the final substituted string (instead of the number of substitutions)'

Muss ich mal sehen, ob man das einfach irgendwie anders substituieren kann. Was für eine Perl-version benutzt Du?

Gruß,

Norbert

while (!asleep()) {sheep++};

justme1968

ZitatWas für eine Perl-version benutzt Du?
zum entwickeln den default auf meinem mac: This is perl 5, version 12, subversion 4 (v5.12.4) built for darwin-thread-multi-2level

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ntruchsess

5.12.4 ist ja recht aktuell, das sollte der s///r modifier eigentlich tun :-( Naja, sollte sich mit einer einfachen Zuweisung an eine tmp-variable vor dem Anwenden der Regex eigentlich lösen lassen.

Ich hab grade mal eine Verringerung der Paketgröße ausprobiert, wenn ich nur 36 Bytes 'Nutzlast' zulasse, dann gibts auch mit höherem Durchsatz keine Korruption mehr. Würde mich nur interessieren, wo ich (oder der PanStamp-stack) mir hier die Daten im hinteren Teil des Packets überschreibe, in der Theorie sollten die 51 Bytes (SWAP_REG_VAL_LEN-4) ja reinpassen.

Gruß,

Norbert
while (!asleep()) {sheep++};

ntruchsess

hier die erste lauffähige PanStampFirmata. Zum flashen erst mal einfach so compilieren, dann alles was man nicht braucht (I2C, OneWire, Scheduler, Servo, Stepper...) rauskommentieren und nochmal compilieren + hochladen. Alle Features passen zusammen mit PanStream nicht auf den PanStamp (wenn man keine Features streicht macht upload beim Verify einen Fehler).

das dazu passende perl-beispiel das Device::PanStamp mit Device::Firmata zusammenführt und die Led an Pin 4 über PanStream und Firmata blinken läßt.

(Man muss ein bischen Geduld mitbringen, die Initialisierung dauert wg. des langen transmit-intervals gefühlt ewig bis die LED dann endlich mal blinkt ;-)

Gruß,

Norbert
while (!asleep()) {sheep++};

justme1968

sehr geil...

kannst du mir mal bitte ein wenig git nachilfe geben? ich habe gerade das problem das ich deine letzten änderungen nicht in meine ausgecheckte version bekomme.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ntruchsess

ein 'git pull origin' sollte eigentlich reichen.

Falls Du den Branch an sich noch nicht ausgecheckt hast: 'git fetch origin device_panstamp', danach 'git checkout device_panstamp'

Noch einfacher ist es 'git gui' aufzurufen. Dort gibt es den Menüpunkt 'Andere Archive'. Hier kann man mit 'anfordern von'->'origin' alle Änderungen auf einmal holen.

Falls Du nicht weißt in welchem Branch Du gerade arbeitest: 'git status'...

mit 'git help <command>' gibt detailierte Hilfe für die jeweilige Aktion. (Manchmal auch ein bischen zu detailiert...)

Gruß,

Norbert
while (!asleep()) {sheep++};

ext23

Nabend,

sag mal ich bekomme neuerdings die Meldung "register 0F is not known" wenn ich den RGB Controller schalten möchte. Hat sich da irgend was bei FHEM geändert durch die Updates was stört?

Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

justme1968

mach mal bittelist <device>
get <device> deviceXML
set <device> statusRequest
set <device> readDeviceXML
list <device>
get <device> deviceXML

die meldung kommt eigentlich nur dann wenn das device xml nicht geladen werden kann und das swap modul dann die register definition nicht kennt. da ist irgendetwas durcheinander gekommen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ext23

Mhh da tut sich nichts, aber es sieht jetzt auch nicht so aus als wenn ihm die XML fehlt.

Ich finde in dem SWAP Modul keine Versionsinformation, hast du denn da vielleicht schon was Neues?

Viele Grüße
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)