FS20S8M Spezialfirmware, S0 für Energiezähler, AD Wandler usw.

Begonnen von Noname, 01 Juni 2014, 23:47:28

Vorheriges Thema - Nächstes Thema

Waldmensch

#75
Ja, Modul ist Zugefügt und CUL.PM ist angepasst. Die Pakete werden ja von FHEM verwurstet (s Screenshot). Das hat aber denke ich nix mit Adressen und Intervall zu tun. Ja 1 Sekunde ist Quatsch, hab mich vertippt, 1 Minute meinte ich. Ich habe die Defines aus dem PDF genommen und die Hausadresse eingetragen, die im Log erscheint FF05 (obwohl ich FD04 programmiert hab) und auch die Taster aus den Logeinträgen s.o. übernommen. Ich weiß nicht, ob das so stimmt, Also welcher Taster nun Leistung, Mittelwert und Summe ist. Aber das kriegt man ja notfalls raus. Die Hausadresse ist mir auch völlig egal, ob die nun fd04 oder ff05 ist. wichtig ist für mich nur der Sendeintervall, weil 17 Minuten ist viel zu lang

Ich habe alle Dateien aus dem ZIP verwendet, ich hoffe, dass das die aktuellsten sind.

Eine Minute stelle ich doch im Programmiermodus wie folgt ein?
- TA1 + TA5 bis es schnell blinkt
- dann TA1 für den Wert "eine Minute"
- dann warten bis es wieder langsam blinkt als Zeichen das es gespeichert ist
- Strom weg und Strom wieder an

Ich habe das jetzt alles bestimmt 10x durchexerziert. Kabel sind keine dran, Programmer habe ich abgelötet als ich den Sender drangelötet hab. Die Schaltung wird an einem 12V Netzteil betrieben. Verwendet habe ich die S0 Bin. Ich weiß nicht wo ich einen Fehler drinhaben soll. So kompliziert ist das menü ja nicht. Was aber zum Beispiel Seltsam ist, sind die Taster Adressen die in FHEM ankommen. Auf die hat man ja im Prog Modus gar keinen Einfluss. Laut PDF defines dürfte es ff0501 gar nicht geben, da gibt es nur 12,13,14,15 als Taster Adressen bei S0


Hier noch ein Ausschnitt des Logfiles des einen Tasters, da siehst Du das es sendet und in welchen intervallen

2016-04-10_21:37:59 FS20V_ff0501 raw: 0
2016-04-10_21:37:59 FS20V_ff0501 0
2016-04-10_21:37:59 FS20V_ff0501 RSSI: -55.5
2016-04-10_21:37:59 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000
2016-04-10_21:54:43 FS20V_ff0501 raw: 0
2016-04-10_21:54:43 FS20V_ff0501 0
2016-04-10_21:54:43 FS20V_ff0501 RSSI: -54
2016-04-10_21:54:43 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000
2016-04-10_22:11:27 FS20V_ff0501 raw: 0
2016-04-10_22:11:27 FS20V_ff0501 0
2016-04-10_22:11:27 FS20V_ff0501 RSSI: -54.5
2016-04-10_22:11:27 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000
2016-04-10_22:28:11 FS20V_ff0501 raw: 0
2016-04-10_22:28:11 FS20V_ff0501 0
2016-04-10_22:28:11 FS20V_ff0501 RSSI: -53.5
2016-04-10_22:28:11 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000
2016-04-10_22:44:55 FS20V_ff0501 raw: 0
2016-04-10_22:44:55 FS20V_ff0501 0
2016-04-10_22:44:55 FS20V_ff0501 RSSI: -52.5
2016-04-10_22:44:55 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000
2016-04-10_23:01:39 FS20V_ff0501 raw: 0
2016-04-10_23:01:39 FS20V_ff0501 0
2016-04-10_23:01:39 FS20V_ff0501 RSSI: -55
2016-04-10_23:01:39 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000
2016-04-10_23:18:22 FS20V_ff0501 raw: 0
2016-04-10_23:18:22 FS20V_ff0501 0
2016-04-10_23:18:22 FS20V_ff0501 RSSI: -54
2016-04-10_23:18:22 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000
2016-04-10_23:35:06 FS20V_ff0501 raw: 0
2016-04-10_23:35:06 FS20V_ff0501 0
2016-04-10_23:35:06 FS20V_ff0501 RSSI: -53
2016-04-10_23:35:06 FS20V_ff0501 RAWMSG: 810c04xx0101a001ff0501008000

Waldmensch

#76
Ich habe die 101 aus dem Zip geflasht, unten nochmal das Log. Da sind zwar Fehler drin, aber das Flashen scheint ja geklappt zu haben. Es wird gesendet und und wenn ich mit TA8 Impulse erzeuge (also das S0 Signal simuliere), werden die auch in FHEM gezeigt. Das Intervall wird ja aber bei der 100 genauso gesetzt wie in der 101, wie ich in deinem PDF zur 100 sehe. Es müßte also genauso funktionieren, das selbst wenn die gelieferten Daten nicht passen, diese doch jede Minute und nicht alle 17 Minuten kommen

Das Aktivieren der Mod klappt ja ansich auch. Es kommen 4 Telegramme und wenn ich TA8 setze blinkt die LED im Betrieb und wenn ich es nicht setze bleibt die LED dunkel.

vorbereiten ...
brennen ...
benutze: usbasp - USBasp, http://www.fischl.de/usbasp/ an ?? mit ATmega48
Flash : "C:\\Users\\Tommy\\Downloads\\FS20S8MSpezial\\FS20S8MS0_V101.bin" 4080 Bytes
warning: cannot set sck period. please check for usbasp firmware update.
warning: cannot set sck period. please check for usbasp firmware update.
Flash ... erfolgreich (7.52 s)
warning: cannot set sck period. please check for usbasp firmware update.
Fuse lfuse ... erfolgreich (0.61 s)
warning: cannot set sck period. please check for usbasp firmware update.
Fuse hfuse ... erfolgreich (1.16 s)
warning: cannot set sck period. please check for usbasp firmware update.
FEHLER
0xff != 0x01
Gesamtdauer: (11.05 s)

Noname

#77
Hallo Waldmensch,

ich kann das bin vom zip auf ein FS20S8M Modul spielen,
allerdings erst am Mittwoch Abend.

Im Anhang nochmals das bin, wenn du warten kannst sparst du dir
das ab und anlöten, dann teste ich das nochmals.

Interessart wären die Inhalte des EEPROM, kannst du die mit
deinem ISP Tool irgendwie auslesen, dann könnten wir überprüfen
welche Einstellungen sich darin befinden.

Waldmensch

#78
Na so wild ist das löten nicht. Sender ab und Programmer dran. Mal sehen ob ich heute Abend dazu komme.

Ich dachte ja auch schon, das einer der Taster vielleicht klemmt. Aber wenn ich mir die Settings (Adresse1, Adresse2, Zyklus) Anschaue, gibt es da kein regelmäßig "hängendes" Bit

soll = was ich über die Taster des FS20S8M gesetzt habe
ist = was in FHEM ankommt

Beim Zyklus könnte es 16 oder 17 Minuten sein, das kann man im FHEM nicht so genau sehen. Beim Zyklus scheint es auch überhaupt nicht relevant zu sein, was man dort setzt, der tatsächliche intervall bleibt bei den 16-17 Sekunden. Ich würde vermuten, da läuft irgendwas beim speichern der Werte im Menü schief.


Adresse1 soll: 11111101 0xFD
Adresse1 ist: 11111111 0xFF

Adresse2 soll: 00000100 0x04
Adresse2 ist: 00000101 0x05

Zyklus soll: 00000001 1
Zyklus ist: 00010000 16
Zyklus ist: 00010001 17



Ich werde heute nochmal den Zyklus auf 24 setzen, also 00011000. Wenn dann die Telegramme alle 24 Minuten kommen, wäre klar, das das 5. Bit (dezimal 16) irgendwie immer gesetzt ist.

Noname

ich würde an deiner stelle das Sendemodul mit einer
Pfostenbuchse steckbar machen.

Waldmensch

Ich habe mir diesen blauen myAVR Stick bestellt. Dann kann ich auch mit 3V flashen. Ich will ausschließen, das es an mir (dem flashen o.ä.) liegt. Ich glaubs zwar nicht, aber sicher ist sicher.

Noname

Alles klar,
ich habe nochmal einen Dateivergleich vom zip und der bin gemach,
die ist gleich.

Waldmensch

Hast Du den selbst, oder wer anders, die S0 Firmware funktionierend im Einsatz? Im Thread lese ich eigentlich nur von der anderen Version, betr. Füllstandsanzeige etc.

Noname

ich nutze die FW für S0 schon sehr lange.
Es könnte sein das es bei dir Probleme gibt
die Einstellungen in das EEProm zu schreiben.
Beim MYAVR Tools kann man die EEProm Werte
auslesen, dann wüssten wir wo es scheitert.

Du kannst auch alle Betriebsarten aktivieren Mod 1-8,
dann sollten die Zustände der Taster über Adr1 angezeigt werden.
Alles 0, wenn kein Taster betätigt ist. Du kannst auch das
Flash mit Füllstandsanzeige zum Testen aufspielen.

Oder Einfach bis Mittwoch warten.

Waldmensch

Zum Flashen habe ich ja die MyAVR Tools genutzt, nur halt nicht mit dem originalen Programmer. Ich kann ja mal versuchen das Eprom zu lesen, wenn ich den Programmer nochmal dranlöte. Vielleicht kann man es auch mit dem Programmer beschreiben, ohne das Menü benutzen zu müssen. Sind ja nur 5 Byte wenn ich mir das so anschau  ;)

Andererseits, am generellen Eprom schreiben vom Menü kanns auch nicht liegen, ich sehe ja den Unterschied an der LED wenn ich MOD 8 ein/ausschalte - dieser wert wird also definitv korrekt gesetzt, wie auch die anderen MOD. Probleme habe ich nur beim Hauscode und dem Zyklus. Das ist ja das kuriose

Waldmensch

#85
Eprom lässt sich auslesen s. screenshot

Aufgedröselt wie folgt (gesetzt = die Werte die ich über das Menü eingegeben hab) Die Werte werden in der Tat vom Menü aus falsch ins Eprom geschrieben. Was im Eprom steht, wird dann aber Korrekt im Programm benutzt. Ich werde jetzt versuchen meine Werte direkt ins Eprom zu schreiben, um den Gegenbeweis anzutreten, das dann die Parameter genutzt werden.

FF 11111111 gesetzt FD
05 00000101 gesetzt 04
FF 11111111 ---
11 00010001 gesetzt 01
F9 11111001 gesetzt F8


Edit:
Die ausgelesene Datei habe ich in einem Hexeditor editiert und wieder aufs eprom geladen. Freundlicherweise sagt myTools welche checksumme verkehrt ist, also noch 2x im Editor das Hexfile editiert und die richtigen checksummen eingefügt. Das eprom file habe ich mit angehängt, falls jemand das gleiche Problem hat. Mit diesen Parametern (im eprom file) ist die Hausadresse FF05, Der Sendezyklus 1 Minute und es sind die Mod 7,6,5,4 aktiviert

Mit diesen Settings wird jetzt in der Tat alle Minute gesendet. Nach einspielen des Eprom sollte man übers Menü nix mehr machen, ich habe das jetzt nicht probiert, aber könnte mir denken, das die Werte dann wieder inkorrekt im Eprom stehen

Waldmensch

Also es kommen 3 Telegramme. Diese Schalteradressen habe ich über die 3 folgenden defines zugewiesen. (Summe hatte ich erst auf Mittel aber das stand heute früh auf 5kW, also muß es Summe sein)  Bei den anderen bin ich mir aber auch nicht sicher, was nun was ist, da die Schalteradressen nicht mit dem PDF übereinstimmen.

define FS20_EVU_Leistung FS20V ff05 05
attr FS20_EVU_Leistung FS20V_Dpoint 3
attr FS20_EVU_Leistung FS20V_Factor 0.001
attr FS20_EVU_Leistung FS20V_Unit KW
attr FS20_EVU_Leistung IODev nanoCUL
attr FS20_EVU_Leistung model FS20V
attr FS20_EVU_Leistung room FS20V

define FS20_EVU_Summe FS20V ff05 03
attr FS20_EVU_Summe FS20V_Counter 30
attr FS20_EVU_Summe FS20V_Dpoint 3
attr FS20_EVU_Summe FS20V_Factor 0.001
attr FS20_EVU_Summe FS20V_Max 5
attr FS20_EVU_Summe FS20V_Unit KWh
attr FS20_EVU_Summe IODev nanoCUL
attr FS20_EVU_Summe model FS20V
attr FS20_EVU_Summe room FS20V


define FS20_EVU_Max FS20V ff05 04
attr FS20_EVU_Max FS20V_Dpoint 3
attr FS20_EVU_Max FS20V_Factor 0.001
attr FS20_EVU_Max FS20V_Unit KW
attr FS20_EVU_Max IODev nanoCUL
attr FS20_EVU_Max model FS20V
attr FS20_EVU_Max room FS20V



Noname

#87
Hallo Waldmensch,

die Adressen im pdf sollten schon stimmen Adr(x)?

die konfig für fhem ist im pdf als Muster zu sehen, die Adressen könnte man im pdf anpassen!

im Anhang mein cfg, ich verwende allerdings andere Adressen, bitte anpassen.
für dblog sollte dann folgendes eingetragen werden:

define DBLOG DbLog ./db.conf (.*:temperature.*|.*:humidity.*|.*:wind.*|.*:*.rain.*|.*:dbvalue.*)
wichtig ist der Eintrag dbvalue!

Ich habe mir nochmals die Firmware für s0 angeschaut, das Speichern der Einstellungen muss
funktionieren, kein Tippfehler usw. Vielleicht ist irgendwas beim kompilieren schief gegangen.
Ich teste es trotzdem Morgen nochmal mit dem bin von zip.
Stimmen bei dir wirklich die FUSE Bit?

Irgendwas läuft bei dir nicht richtig, es müssen 4 Telegramme sein!

Funktionen:
Mod: TA1 (Adr 1) Zustandsmelder (TA1-8 über Kontakte)
....

Mod: TA2 (Adr 2) Analogwert Spannung 0-3V (IR Port)
...

Mod: TA2 + TA3 (Adr 2) Widerstandsgeber (IR Port , z.B LDR oder Poti)
...

Mod: TA4 (Adr 3) Analogwert Dualmessung (2. Kanal)
...

Mod: TA5 (Adr 4) Kapazitive Füllstandsmessung
...

Nur bei Firmware FS20S8MS0VXX:
Mod: TA4 (Adr 3) S0 Schnittstelle (über TA8) Zählwert
....

Mod: TA5 (Adr 4) S0 Schnittstelle (TA8) momentane Leistungsanzeige
...

Mod: TA6 (Adr 5) S0 Schnittstelle (TA8) Mittelwert Leistungsanzeige
...

Mod: TA7 (Adr 6) S0 Schnittstelle (TA8) Maximale Leistungsanzeige
...

Mod: TA8 = LED / DA Anzeige RUN aktivieren

Waldmensch

#88
also der Wert für die MOD 7,6,5,4 ist ja 01111000 was dem Hexwert 0x78 entspricht. Das habe ich ins EPROM geschrieben (s.o.)

Okay, das mit den define Beispielen im PDF habe ich dann falsch interpretiert bzw. blind übernommen. Orientierung für die Schalteradressen sind dann die Werte in der Beschreibung der MOD Konfiguration

Adresse 03 ist entsprechend die Summe, das habe ich anhand des akumulierenden Wertes schon rausgefunden
Adresse 04 ist dann die aktuelle Leistung, die habe ich fälschlich als Max definiert
Adresse 05 ist dann der Mittelwert, die habe ich fälschlich als Leistung definiert

Es fehlt also Adresse 06 in den Telegrammen, der Max Wert. Da das Bit TA7 durch 0x78 (s. Screenshot EPROM Inhalt) gesetzt ist, weiß ich da jetzt keine Lösung. Ich werde nochmal die Logs durchforsten - es müsste dann ja ein wildes FF05 06 in den Logs auftauchen bzw durch autocreate als FS20V_FF05_06 angelegt werden. Die LED blinkt aber auch nur 3x pro Zyklus, was ich als 3 Sendevorgänge ansehen würde.

DBLog ist richtig konfiguriert, ich krieg ja mit dem SVG Werte rausgezogen (s. Screenshot), also wird auch korrekt geschrieben.

Die Fuses sind so gesetzt, wie im PDF beschrieben, wenn sie denn im ATMEGA angekommen sind. Hatte ja ein paar Fehlermeldungen durch den Programmer. Wenn ich den myAVR Stick habe, flashe ich einfach nochmal drüber.

Falls alle Stränge reißen, so wie es jetzt funktioniert, ist es für mich durchaus schon okay. Solange die aktuelle Leistung über 04 in FHEM ankommt, habe ich eigentlich alles was ich brauche. Ich hole mir die aktuelle Leistung eh durch ein userreading in das Modul für den Wechselrichter rein um dann weiterführend die Einspeisung zu errechnen bzw. Dinge bei Überschuss zu schalten.

Wenn Du sagst, das das Programm okay ist, bleiben ja eigentlich nur 3 Fehlerquellen
1. kompilieren
2. Programmer (bzw. Fehler beim programmieren / Fuses)
3. Hardware defekt

1. kannst Du ausschließen, wenn die bin aus dem zip bei dir läuft
2. kann ich ausschließen sobald der myAVR da ist und ich keine Fehler mehr im Log vom flashen hab
3. nuja, da kann man nicht viel machen, da müsste ich dann halt mit leben


Edit:
Was ich nicht verstehe, in der cfg, die du oben angehangen hast, hast Du die Adresse 13 angegeben, so wie es auch im PDF steht. (define EVU_Leistung FS20V 1234 13) Das müßte doch 04 sein?!

Waldmensch

Hier mal ein Vergleich der Daten von der S0 Schnittstelle (oberes Chart) im Vergleich zu den Daten vom Sunny Portal (unteres Chart). Die S0 Abfrage ist wesentlich genauer und feiner, wobei ich dazusagen muss, das der Abfrageintervall beim Sunny Portal auf 2 Minuten steht, während die S0 Abfrage jede Minute kommt. Die peaks im Chart ist die Kaffeemaschine ;)

Ich bin total happy mit der Lösung. Wenn jetzt das Modul für den Wechselrichter noch funktioniert, fliegt die Sunny Portal Abfrage komplett raus.

Vielen Dank an @Noname für diese Klasse Lösung und den Support bisher