Integer per Skript in Binärzahl umwandeln

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Integer per Skript in Binärzahl umwandeln

Beitrag von anli » 17.10.2012, 22:59

Hallo!

Mit folgendem Skript kann man eine Integerzahl (hier max. 256) per HM-Skript in eine Binärzahl umwandeln:

Code: Alles auswählen

integer x = 133;
integer b = 256;
while (b > 0)
{
  if (b > 1) { Write(x / b); } 
  else { if ((x / b) == 2) { Write("0"); } else { Write("1"); } }
  if (x > b) { x = x - b; }
  b = b / 2;
}
Die Ausgabe erfolgt zum Beispiel im erweiterten Skript-Parser und kann entsprechend angepasst für eigene Zwecke genutzt werden.
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

HMNutzer
Beiträge: 715
Registriert: 24.10.2016, 17:18
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 151 Mal
Danksagung erhalten: 22 Mal

Re: Integer per Skript in Binärzahl umwandeln

Beitrag von HMNutzer » 10.11.2020, 17:27

Hallo Anli,

Dein Skript kann ich sehr gut gebrauchen, um den Status meiner Wallbox auszulesen:
Status dezimal 4101 = binär 01000000000101
Wallbox-Status.PNG
Da ich keine Ahnung vom Skripten und dieser seltsamen Sprache* habe hoffe ich,
dass Du mir eine Erweiterung dieses Skripts schreiben kannst, mit der die Ausgabe in einen String erfolgt
und die einzelnen Bits in die Sysvars WB1-WB12 geschrieben werden. Das höchste Bit hat keine Bedeutung.

Das wäre mir auch was Wert.

*=wo bitte wird erklärt, dass der Befehl Write(4101 / 8192) die Ausgabe 0 bringt und den Rest verwirft?

Edit: fehlendes Wort ergänzt
Zuletzt geändert von HMNutzer am 10.11.2020, 17:48, insgesamt 1-mal geändert.
Viele Grüße

Martin

RaspberryMatic auf ESXi 7 mit RPI-RF-MOD/HB-RF-ETH. Div. HM und HMIP Funkkomponenten im Holzständerhaus

Benutzeravatar
stan23
Beiträge: 2052
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 595 Mal
Danksagung erhalten: 342 Mal
Kontaktdaten:

Re: Integer per Skript in Binärzahl umwandeln

Beitrag von stan23 » 10.11.2020, 17:39

HMNutzer hat geschrieben:
10.11.2020, 17:27
*=wo bitte wird erklärt, dass der Befehl Write(4101 / 8192) die Ausgabe 0 bringt und den Rest verwirft?
Das ist eine Division mit Integern (Ganzzahlen), da fällt der Nachkomma-Anteil einfach weg:
4101 / 8192 = 0,5006 --> 0
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Benutzeravatar
Black
Beiträge: 5526
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 432 Mal
Danksagung erhalten: 1093 Mal
Kontaktdaten:

Re: Integer per Skript in Binärzahl umwandeln

Beitrag von Black » 10.11.2020, 18:04

weg sollte so gehen:

Code: Alles auswählen

integer i1= 4101;

boolean WBVorhanden= (i1 & 1)!=0;
boolean Solarbetrieb= (i1 & 2)!=0;
boolean ladenfreigabe= (i1 & 4)!=0;   
ergibt dann das:

Code: Alles auswählen

------------------------------ Script Variablen -----------------------------
[i1                ]: 4101
[WBVorhanden       ]: true
[Solarbetrieb      ]: false
[ladenfreigabe     ]: true
dito für deine restlichen Variablen


Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

HMNutzer
Beiträge: 715
Registriert: 24.10.2016, 17:18
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 151 Mal
Danksagung erhalten: 22 Mal

Re: Integer per Skript in Binärzahl umwandeln

Beitrag von HMNutzer » 10.11.2020, 18:19

Servus Black,

danke für die Info.
Nur: Wie kriege ich die Ausgabe aus Anli's Skript in die Variable?
Ich habe echt keine Ahnung von Skripten. Kennt jemand eine Seit für Dummies?
Bei Schellenberger.biz bin ich schon unterwegs.
Viele Grüße

Martin

RaspberryMatic auf ESXi 7 mit RPI-RF-MOD/HB-RF-ETH. Div. HM und HMIP Funkkomponenten im Holzständerhaus

HMNutzer
Beiträge: 715
Registriert: 24.10.2016, 17:18
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 151 Mal
Danksagung erhalten: 22 Mal

Re: Integer per Skript in Binärzahl umwandeln

Beitrag von HMNutzer » 15.11.2020, 20:29

Servus,

dank der Anstösse von Black habe ich meine Anforderung zu meiner Zufriedenheit gelöst.
Wenn ich mit der Optik des Skripts zufrieden bin veröffentliche ich es in dem Modbus Thread, da da die Werte ja herkommen.
Viele Grüße

Martin

RaspberryMatic auf ESXi 7 mit RPI-RF-MOD/HB-RF-ETH. Div. HM und HMIP Funkkomponenten im Holzständerhaus

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“