Électrolyseur Pool Technologie via le port RS485 (Justsalt, Ibaregul Duo...)

Bonjour,

J’ouvre ce sujet pour partager l’avancée de l’intégration de l’électrolyseur Pool Technologie sur Home Assistant via le port RS485 à l’aide du protocol modbus (voir ici pour le bluetooth) .

J’utilise le programme modpoll-3.15 pour lire les registres.

  1. Déterminer les entrées utilisées

Il y a 65536 registres, mais tous ne sont pas utilisés. Création d’un script .bat pour déterminer lesquels sont utilisées:

@echo off
setlocal enabledelayedexpansion

:: Paramètres
set "MODPOLL=.\modpoll.exe"
set "PORT=COM3"
set "BAUD=9600"
set "PARITY=none"
set "MODE=rtu"
set "SLAVE=1"
set "DATA_TYPE=4"
set "OUTPUT_FILE=valid_registers.txt"

:: Nettoyage du fichier précédent
echo Liste des registres valides > "%OUTPUT_FILE%"

:: Boucle sur les registres de 1 à 65536
for /L %%R in (1,1,65536) do (
    echo Test du registre %%R...
    
    :: Exécuter modpoll avec -1 pour éviter le polling infini
    %MODPOLL% -b %BAUD% -p %PARITY% -m %MODE% -a %SLAVE% -r %%R -c 1 -t %DATA_TYPE% -1 %PORT% > temp_output.txt 2>&1

    :: Lire la sortie ligne par ligne
    set "OUTPUT="
    for /f "delims=" %%O in (temp_output.txt) do (
        set "OUTPUT=!OUTPUT! %%O"
    )

    :: Vérifier si "Illegal Data Address" est dans la sortie
    echo !OUTPUT! | findstr /C:"Illegal Data Address" >nul
    if errorlevel 1 (
        echo Registre %%R valide: !OUTPUT!
        echo %%R >> "%OUTPUT_FILE%"
    )
)

echo Test terminé. Résultats enregistrés dans %OUTPUT_FILE%.
del temp_output.txt
pause

Résultat : 932 registres utilisés.

  1. Lecture des valeurs

Création d’un script .bat pour lire ces 932 registres à partir du fichier généré dans le script précédent :

@echo off
setlocal enabledelayedexpansion

:: Paramètres
set "MODPOLL=.\modpoll.exe"
set "PORT=COM3"
set "BAUD=9600"
set "PARITY=none"
set "MODE=rtu"
set "SLAVE=1"
set "DATA_TYPE=4"
set "RESULT_FILE=register_results.txt"

:: Nettoyage du fichier des résultats précédents
echo Résultats des registres > "%RESULT_FILE%"

:: Lire chaque registre valide dans le fichier valid_registers.txt
for /f "tokens=*" %%R in (valid_registers.txt) do (
    echo Lecture du registre %%R...
    
    :: Exécuter modpoll pour lire la valeur du registre
    %MODPOLL% -b %BAUD% -p %PARITY% -m %MODE% -a %SLAVE% -r %%R -c 1 -t %DATA_TYPE% -1 %PORT% > temp_output.txt 2>&1

    :: Extraire la ligne contenant la valeur
    set "OUTPUT="
    for /f "delims=" %%O in (temp_output.txt) do (
        set "OUTPUT=%%O"
        if "!OUTPUT!" neq "" (
            :: Vérifier si la ligne contient la valeur (après `]:`)
            echo !OUTPUT! | findstr /C:"]: " >nul
            if not errorlevel 1 (
                :: Extraire la valeur après `]: `
                for /f "tokens=2 delims=: " %%V in ("!OUTPUT!") do (
                    echo Registre %%R: %%V >> "%RESULT_FILE%"
                )
            )
        )
    )
)

echo Test terminé. Résultats enregistrés dans %RESULT_FILE%.
del temp_output.txt
pause

Voici les valeurs récupérées :

Résultats des registres 
Registre 1 : 12848 
Registre 2 : 12334 
Registre 3 : 11824 
Registre 4 : 12336 
Registre 5 : 0 
Registre 6 : 12886 
Registre 7 : 0 
Registre 8 : 13104 
Registre 9 : 12334 
Registre 10 : 11826 
Registre 11 : 12336 
Registre 12 : 0 
Registre 13 : 24909 
Registre 14 : 8306 
Registre 15 : 13856 
Registre 16 : 12832 
Registre 17 : 12848 
Registre 18 : 51 
Registre 19 : 0 
Registre 20 : 13105 
Registre 21 : 13114 
Registre 22 : 14905 
Registre 23 : 12339 
Registre 24 : 0 
Registre 25 : 20545 
Registre 26 : 8272 
Registre 27 : 17735 
Registre 28 : 17742 
Registre 29 : 18771 
Registre 30 : 83 
Registre 31 : 0 
Registre 32 : 11317 
Registre 33 : 12336 
Registre 39 : -8556 
Registre 40 : -21320 
Registre 41 : 2423 
Registre 42 : 20 
Registre 43 : 0 
Registre 44 : 0 
Registre 45 : 0 
Registre 161 : 12592 
Registre 162 : 12334 
Registre 163 : 11824 
Registre 164 : 12336 
Registre 165 : 0 
Registre 166 : 20290 
Registre 167 : 21583 
Registre 168 : 22048 
Registre 169 : 11571 
Registre 170 : 13398 
Registre 171 : 0 
Registre 172 : 24906 
Registre 173 : 8302 
Registre 174 : 14386 
Registre 175 : 12832 
Registre 176 : 12848 
Registre 177 : 48 
Registre 178 : 0 
Registre 179 : 0 
Registre 180 : 13617 
Registre 181 : 12346 
Registre 182 : 14905 
Registre 183 : 13104 
Registre 184 : 0 
Registre 185 : 20290 
Registre 186 : 21583 
Registre 187 : 18208 
Registre 188 : 20037 
Registre 189 : 21317 
Registre 190 : 21321 
Registre 191 : 0 
Registre 192 : -1 
Registre 256 : 3 
Registre 257 : 0 
Registre 258 : 0 
Registre 259 : 0 
Registre 260 : 7663 
Registre 261 : 120 
Registre 262 : 2 
Registre 263 : 700 
Registre 264 : 0 
Registre 265 : 450 
Registre 266 : 23 
Registre 273 : 0 
Registre 274 : 0 
Registre 275 : 0 
Registre 276 : 919 
Registre 277 : 3223 
Registre 278 : 2579 
Registre 279 : 3288 
Registre 280 : 0 
Registre 281 : 247 
Registre 282 : 1042 
Registre 289 : 97 
Registre 290 : 0 
Registre 513 : 8224 
Registre 514 : 8224 
Registre 515 : 8224 
Registre 516 : 8224 
Registre 517 : 8224 
Registre 518 : 8224 
Registre 519 : 8224 
Registre 520 : 8224 
Registre 521 : 8224 
Registre 522 : 8224 
Registre 523 : 8224 
Registre 524 : 8224 
Registre 525 : 8224 
Registre 526 : 8224 
Registre 527 : 8224 
Registre 528 : 8224 
Registre 769 : -256 
Registre 770 : 0 
Registre 771 : 0 
Registre 772 : 0 
Registre 773 : 0 
Registre 774 : 1093 
Registre 775 : 0 
Registre 776 : 0 
Registre 777 : 0 
Registre 778 : 0 
Registre 779 : 0 
Registre 780 : 0 
Registre 781 : 0 
Registre 782 : 0 
Registre 783 : 0 
Registre 784 : 0 
Registre 785 : 0 
Registre 786 : 0 
Registre 787 : 0 
Registre 788 : 0 
Registre 789 : 0 
Registre 790 : 0 
Registre 791 : 0 
Registre 792 : 0 
Registre 793 : 0 
Registre 794 : 0 
Registre 795 : 0 
Registre 796 : 0 
Registre 797 : 0 
Registre 798 : 0 
Registre 799 : 0 
Registre 800 : 0 
Registre 801 : 0 
Registre 802 : 0 
Registre 803 : 0 
Registre 804 : 0 
Registre 805 : 0 
Registre 1025 : 0 
Registre 1026 : 1093 
Registre 1027 : 0 
Registre 1028 : 0 
Registre 1029 : 0 
Registre 1030 : 0 
Registre 1031 : 0 
Registre 1032 : 0 
Registre 1033 : 0 
Registre 1034 : 0 
Registre 1035 : 0 
Registre 1057 : 0 
Registre 1058 : 0 
Registre 1059 : 0 
Registre 1060 : 0 
Registre 1061 : 0 
Registre 1062 : 0 
Registre 1063 : 0 
Registre 1064 : 0 
Registre 1065 : 0 
Registre 1066 : 0 
Registre 1067 : 0 
Registre 1068 : 0 
Registre 1069 : 0 
Registre 1070 : 0 
Registre 1071 : 0 
Registre 1072 : 0 
Registre 1073 : 0 
Registre 1074 : 0 
Registre 1075 : 0 
Registre 1076 : 0 
Registre 1077 : 0 
Registre 1078 : 0 
Registre 1079 : 0 
Registre 1080 : 0 
Registre 1081 : 0 
Registre 1082 : 0 
Registre 1083 : 0 
Registre 1084 : 0 
Registre 1085 : 0 
Registre 1086 : 0 
Registre 1087 : 0 
Registre 1088 : 0 
Registre 1089 : 0 
Registre 1090 : 0 
Registre 1091 : 0 
Registre 1092 : 0 
Registre 1093 : 0 
Registre 1094 : 0 
Registre 1095 : 0 
Registre 1096 : 0 
Registre 1097 : 0 
Registre 1098 : 0 
Registre 1099 : 0 
Registre 1100 : 0 
Registre 1101 : 0 
Registre 1102 : 0 
Registre 1103 : 0 
Registre 1104 : 0 
Registre 1105 : 0 
Registre 1106 : 0 
Registre 1107 : 0 
Registre 1108 : 0 
Registre 1109 : 0 
Registre 1110 : 0 
Registre 1111 : 0 
Registre 1112 : 0 
Registre 1113 : 0 
Registre 1114 : 0 
Registre 1115 : 0 
Registre 1116 : 0 
Registre 1117 : 0 
Registre 1118 : 0 
Registre 1119 : 0 
Registre 1120 : 0 
Registre 1121 : 0 
Registre 1122 : 0 
Registre 1123 : 0 
Registre 1124 : 0 
Registre 1125 : 0 
Registre 1126 : 0 
Registre 1127 : 0 
Registre 1128 : 0 
Registre 1129 : 0 
Registre 1130 : 0 
Registre 1131 : 0 
Registre 1132 : 0 
Registre 1133 : 0 
Registre 1134 : 0 
Registre 1135 : 0 
Registre 1136 : 0 
Registre 1137 : 0 
Registre 1138 : 0 
Registre 1139 : 0 
Registre 1140 : 0 
Registre 1141 : 0 
Registre 1142 : 0 
Registre 1143 : 0 
Registre 1144 : 0 
Registre 1145 : 0 
Registre 1146 : 0 
Registre 1147 : 0 
Registre 1148 : 0 
Registre 1149 : 0 
Registre 1150 : 0 
Registre 1151 : 0 
Registre 1152 : 0 
Registre 1153 : 0 
Registre 1154 : 0 
Registre 1155 : 0 
Registre 1156 : 0 
Registre 1157 : 0 
Registre 1158 : 0 
Registre 1159 : 0 
Registre 1160 : 0 
Registre 1161 : 0 
Registre 1162 : 0 
Registre 1163 : 0 
Registre 1164 : 0 
Registre 1165 : 0 
Registre 1166 : 0 
Registre 1167 : 0 
Registre 1168 : 0 
Registre 1169 : 0 
Registre 1170 : 0 
Registre 1171 : 0 
Registre 1172 : 0 
Registre 1173 : 0 
Registre 1174 : 0 
Registre 1175 : 0 
Registre 1176 : 0 
Registre 1177 : 0 
Registre 1178 : 0 
Registre 1179 : 0 
Registre 1180 : 0 
Registre 1181 : 0 
Registre 1182 : 0 
Registre 1183 : 0 
Registre 1184 : 0 
Registre 1185 : 0 
Registre 1186 : 0 
Registre 1187 : 0 
Registre 1188 : 0 
Registre 1189 : 0 
Registre 1190 : 0 
Registre 1191 : 0 
Registre 1192 : 0 
Registre 1193 : 0 
Registre 1194 : 0 
Registre 1195 : 0 
Registre 1196 : 0 
Registre 1197 : 0 
Registre 1198 : 0 
Registre 1199 : 0 
Registre 1200 : 0 
Registre 1201 : 0 
Registre 1202 : 0 
Registre 1203 : 0 
Registre 1204 : 0 
Registre 1205 : 0 
Registre 1206 : 0 
Registre 1207 : 0 
Registre 1208 : 0 
Registre 1209 : 0 
Registre 1210 : 0 
Registre 1211 : 0 
Registre 1212 : 0 
Registre 1213 : 1 
Registre 1214 : 0 
Registre 1215 : 769 
Registre 1216 : -16636 
Registre 1217 : 256 
Registre 1218 : -14636 
Registre 1219 : 0 
Registre 1220 : 0 
Registre 1221 : 0 
Registre 1222 : 0 
Registre 1223 : 0 
Registre 1224 : 0 
Registre 1225 : 0 
Registre 1226 : 0 
Registre 1227 : 0 
Registre 1228 : 0 
Registre 1229 : 0 
Registre 1230 : 0 
Registre 1231 : 0 
Registre 1232 : 0 
Registre 1233 : 0 
Registre 1234 : 0 
Registre 1235 : 0 
Registre 1236 : 0 
Registre 1237 : 0 
Registre 1238 : 0 
Registre 1239 : 0 
Registre 1240 : 0 
Registre 1241 : 0 
Registre 1242 : 0 
Registre 1243 : 0 
Registre 1244 : 0 
Registre 1245 : 0 
Registre 1246 : 0 
Registre 1247 : 0 
Registre 1248 : 0 
Registre 1249 : 0 
Registre 1250 : 0 
Registre 1251 : 0 
Registre 1252 : 0 
Registre 1253 : 0 
Registre 1254 : 0 
Registre 1255 : 0 
Registre 1256 : 0 
Registre 1257 : 0 
Registre 1258 : 0 
Registre 1259 : 0 
Registre 1260 : 0 
Registre 1261 : 0 
Registre 1262 : 0 
Registre 1263 : 0 
Registre 1264 : 0 
Registre 1265 : 0 
Registre 1266 : 0 
Registre 1267 : 0 
Registre 1268 : 0 
Registre 1269 : 0 
Registre 1270 : 0 
Registre 1271 : 0 
Registre 1272 : 0 
Registre 1273 : 0 
Registre 1274 : 0 
Registre 1275 : 0 
Registre 1276 : 0 
Registre 1277 : 0 
Registre 1278 : 0 
Registre 1279 : 0 
Registre 1280 : 0 
Registre 1281 : 6 
Registre 1282 : 257 
Registre 1283 : 7560 
Registre 1284 : 0 
Registre 1285 : -26360 
Registre 1286 : 1 
Registre 1287 : 1336 
Registre 1288 : 0 
Registre 1289 : 0 
Registre 1290 : 0 
Registre 1537 : 15367 
Registre 1538 : 0 
Registre 1539 : 0 
Registre 1540 : 0 
Registre 1541 : 0 
Registre 1542 : 0 
Registre 1543 : 0 
Registre 1544 : 0 
Registre 1545 : 0 
Registre 1546 : 0 
Registre 1793 : 0 
Registre 1794 : 255 
Registre 1795 : 0 
Registre 1796 : 0 
Registre 1797 : 0 
Registre 1798 : 0 
Registre 1799 : 0 
Registre 1800 : 0 
Registre 1801 : 0 
Registre 1802 : 0 
Registre 1803 : 0 
Registre 2049 : 0 
Registre 2050 : 0 
Registre 2051 : 0 
Registre 2052 : 0 
Registre 2053 : 0 
Registre 3851 : 0 
Registre 4097 : 8763 
Registre 4098 : 128 
Registre 4099 : 64 
Registre 4100 : 64 
Registre 4101 : 64 
Registre 4102 : 64 
Registre 4103 : 512 
Registre 4104 : 22 
Registre 4105 : 38 
Registre 4106 : 250 
Registre 4107 : 19000 
Registre 4108 : 150 
Registre 4109 : 0 
Registre 4110 : 0 
Registre 4111 : 50 
Registre 4112 : 30 
Registre 4113 : 256 
Registre 4114 : -11918 
Registre 4115 : 3 
Registre 4116 : 0 
Registre 4117 : 257 
Registre 4118 : 1 
Registre 4119 : 0 
Registre 4120 : 601 
Registre 4121 : 512 
Registre 4122 : 1001 
Registre 4123 : 257 
Registre 4124 : 0 
Registre 4125 : -11927 
Registre 4126 : 3 
Registre 4127 : 10101 
Registre 4128 : 0 
Registre 4129 : 10101 
Registre 4130 : 0 
Registre 4131 : 10101 
Registre 4132 : 0 
Registre 4133 : 10101 
Registre 4134 : 0 
Registre 4135 : 0 
Registre 4136 : -1 
Registre 4137 : 17763 
Registre 4138 : 340 
Registre 4139 : 13872 
Registre 4140 : 13362 
Registre 4141 : 12333 
Registre 4142 : 12597 
Registre 4143 : 12855 
Registre 4144 : 11575 
Registre 4145 : 12336 
Registre 4146 : 55 
Registre 4147 : 20291 
Registre 4148 : 20559 
Registre 4149 : 13106 
Registre 4150 : 16969 
Registre 4151 : 16713 
Registre 4152 : 18221 
Registre 4153 : 50 
Registre 4154 : 0 
Registre 4155 : 0 
Registre 4156 : 0 
Registre 4157 : 17735 
Registre 4158 : 24398 
Registre 4159 : 13872 
Registre 4160 : 13362 
Registre 4161 : 12333 
Registre 4162 : 12597 
Registre 4163 : 12855 
Registre 4164 : 11575 
Registre 4165 : 12336 
Registre 4166 : 55 
Registre 4167 : 0 
Registre 4168 : 25600 
Registre 4169 : 100 
Registre 4170 : 100 
Registre 4171 : 1616 
Registre 4172 : 0 
Registre 4173 : 257 
Registre 4174 : 1281 
Registre 4175 : 6400 
Registre 4176 : 150 
Registre 4177 : 1000 
Registre 4178 : 3329 
Registre 4179 : 25601 
Registre 4180 : -27136 
Registre 4181 : 0 
Registre 4182 : 1 
Registre 4183 : 0 
Registre 4184 : 10101 
Registre 4185 : 0 
Registre 4186 : -11919 
Registre 4187 : 3 
Registre 4188 : 24 
Registre 4189 : 0 
Registre 4190 : 0 
Registre 4191 : 1536 
Registre 4192 : 0 
Registre 4193 : 513 
Registre 4194 : 0 
Registre 4195 : 2 
Registre 4196 : 1 
Registre 4197 : 0 
Registre 4198 : 450 
Registre 4199 : 0 
Registre 4200 : 0 
Registre 4201 : 1 
Registre 4202 : -11927 
Registre 4203 : 3 
Registre 4204 : 1052 
Registre 4205 : 507 
Registre 4206 : 26952 
Registre 4207 : 261 
Registre 4208 : 18450 
Registre 4209 : 15 
Registre 4210 : 32 
Registre 4211 : 1600 
Registre 4212 : 900 
Registre 4213 : 300 
Registre 4214 : 147 
Registre 4215 : -256 
Registre 4216 : 60 
Registre 4217 : 20490 
Registre 4218 : 15360 
Registre 4219 : -14336 
Registre 4220 : 0 
Registre 4221 : 0 
Registre 4222 : 0 
Registre 4223 : 0 
Registre 4224 : 0 
Registre 4225 : 0 
Registre 4226 : 0 
Registre 4227 : 0 
Registre 4228 : 0 
Registre 4229 : 0 
Registre 4230 : 0 
Registre 4231 : 0 
Registre 4232 : 0 
Registre 4233 : 16448 
Registre 4234 : 257 
Registre 4235 : 10 
Registre 4236 : 660 
Registre 4237 : 2561 
Registre 4238 : 100 
Registre 4239 : 10101 
Registre 4240 : 0 
Registre 4241 : 0 
Registre 4242 : 10101 
Registre 4243 : 0 
Registre 4244 : 12384 
Registre 4245 : 30 
Registre 4246 : 2880 
Registre 4247 : 0 
Registre 4248 : 0 
Registre 4249 : 10101 
Registre 4250 : 0 
Registre 4251 : 25690 
Registre 4252 : 60 
Registre 4253 : 200 
Registre 4254 : 900 
Registre 4255 : 5 
Registre 4256 : 50 
Registre 4257 : 200 
Registre 4258 : 0 
Registre 4259 : 0 
Registre 4260 : 0 
Registre 4261 : 0 
Registre 4262 : 0 
Registre 4263 : 0 
Registre 4264 : 0 
Registre 4265 : 257 
Registre 4266 : 769 
Registre 4267 : 1 
Registre 4268 : 0 
Registre 4269 : 0 
Registre 4270 : 0 
Registre 4271 : 0 
Registre 4272 : 0 
Registre 4273 : 0 
Registre 4274 : 0 
Registre 4275 : 0 
Registre 4276 : 0 
Registre 4277 : 0 
Registre 4278 : 0 
Registre 4279 : 0 
Registre 4280 : 0 
Registre 4281 : 0 
Registre 4282 : 0 
Registre 4283 : 0 
Registre 4284 : 0 
Registre 4285 : 0 
Registre 4286 : 0 
Registre 4287 : 0 
Registre 4288 : 0 
Registre 4289 : 0 
Registre 4290 : 0 
Registre 4291 : 0 
Registre 4292 : 0 
Registre 4293 : 0 
Registre 4294 : 0 
Registre 4295 : 0 
Registre 4296 : 0 
Registre 4297 : -1 
Registre 4298 : -1 
Registre 4299 : -1 
Registre 4300 : -1 
Registre 4301 : -1 
Registre 4302 : 0 
Registre 4303 : 0 
Registre 4304 : 0 
Registre 4305 : 0 
Registre 4306 : 0 
Registre 4307 : 0 
Registre 4308 : 0 
Registre 4309 : 0 
Registre 4310 : 0 
Registre 4311 : 0 
Registre 4312 : 0 
Registre 4313 : 0 
Registre 4314 : 0 
Registre 4315 : 0 
Registre 4316 : 0 
Registre 4317 : 0 
Registre 4318 : 0 
Registre 4319 : 0 
Registre 4320 : 0 
Registre 4321 : 0 
Registre 4322 : 0 
Registre 4323 : 0 
Registre 4324 : 0 
Registre 4325 : 0 
Registre 4326 : 0 
Registre 4327 : 0 
Registre 4328 : 7 
Registre 4329 : 2 
Registre 4330 : 0 
Registre 4331 : 60 
Registre 4332 : 385 
Registre 4333 : 0 
Registre 4334 : 0 
Registre 4335 : 0 
Registre 4336 : 0 
Registre 4337 : 0 
Registre 4338 : 0 
Registre 4339 : 0 
Registre 4340 : 0 
Registre 4341 : 0 
Registre 4342 : 0 
Registre 4343 : 0 
Registre 4344 : 0 
Registre 4345 : 0 
Registre 4346 : 0 
Registre 4347 : 0 
Registre 4348 : 0 
Registre 4349 : 0 
Registre 4350 : 0 
Registre 4351 : 0 
Registre 4352 : 0 
Registre 4353 : 0 
Registre 4354 : 0 
Registre 4355 : 0 
Registre 4356 : 0 
Registre 4357 : 0 
Registre 4358 : 0 
Registre 4359 : 0 
Registre 4360 : 0 
Registre 4361 : 0 
Registre 4362 : 0 
Registre 4363 : 0 
Registre 4364 : 0 
Registre 4365 : 0 
Registre 4366 : 0 
Registre 4367 : 0 
Registre 4368 : 0 
Registre 4369 : 0 
Registre 4370 : 0 
Registre 4371 : 0 
Registre 4372 : 0 
Registre 4373 : 0 
Registre 4374 : 0 
Registre 4375 : 0 
Registre 4376 : 0 
Registre 4377 : 0 
Registre 4378 : 0 
Registre 4379 : 0 
Registre 4380 : 0 
Registre 4381 : 0 
Registre 4382 : 0 
Registre 4383 : 0 
Registre 4384 : 0 
Registre 4385 : 0 
Registre 4386 : 0 
Registre 4387 : 0 
Registre 4388 : 0 
Registre 4389 : 0 
Registre 4390 : 148 
Registre 4391 : 136 
Registre 4392 : 136 
Registre 4393 : 130 
Registre 4394 : 0 
Registre 4395 : 0 
Registre 4396 : 0 
Registre 4397 : 0 
Registre 4398 : 0 
Registre 4399 : 0 
Registre 4400 : 0 
Registre 4401 : 0 
Registre 4402 : 0 
Registre 4403 : 0 
Registre 4404 : 0 
Registre 4405 : 0 
Registre 4406 : 0 
Registre 4407 : 0 
Registre 4408 : 0 
Registre 4409 : 0 
Registre 4410 : 0 
Registre 4411 : 0 
Registre 4412 : 0 
Registre 4413 : 0 
Registre 4414 : 0 
Registre 4415 : 0 
Registre 4416 : 0 
Registre 4417 : 0 
Registre 4418 : 0 
Registre 4419 : 0 
Registre 4420 : 0 
Registre 4421 : 2 
Registre 4422 : 0 
Registre 4423 : 0 
Registre 4424 : 40 
Registre 4425 : 27 
Registre 4426 : 0 
Registre 4427 : 0 
Registre 4428 : 0 
Registre 4429 : 0 
Registre 4430 : 0 
Registre 4431 : 0 
Registre 4432 : 0 
Registre 4433 : 0 
Registre 4434 : 0 
Registre 4435 : 0 
Registre 4436 : 0 
Registre 4437 : 0 
Registre 4438 : 0 
Registre 4439 : 0 
Registre 4440 : 0 
Registre 4441 : 0 
Registre 4442 : 0 
Registre 4443 : 0 
Registre 4444 : 0 
Registre 4445 : 0 
Registre 4446 : 0 
Registre 4447 : 0 
Registre 4448 : 0 
Registre 4449 : 0 
Registre 4450 : 0 
Registre 4451 : 0 
Registre 4452 : 16383 
Registre 4453 : 111 
Registre 4454 : 0 
Registre 4455 : 100 
Registre 4456 : 16 
Registre 4457 : 0 
Registre 4458 : 0 
Registre 4459 : 0 
Registre 4460 : 0 
Registre 4461 : 0 
Registre 4462 : 13 
Registre 4463 : 0 
Registre 4464 : 0 
Registre 4465 : 115 
Registre 4466 : 0 
Registre 4467 : 0 
Registre 4468 : 0 
Registre 4469 : 0 
Registre 4470 : 0 
Registre 4471 : 0 
Registre 4472 : 0 
Registre 4473 : 0 
Registre 4474 : 0 
Registre 4475 : 0 
Registre 4476 : 0 
Registre 4477 : 0 
Registre 4478 : 0 
Registre 4479 : 0 
Registre 4480 : 0 
Registre 4481 : 0 
Registre 4482 : 0 
Registre 4483 : 0 
Registre 4484 : 0 
Registre 4485 : 0 
Registre 4486 : 0 
Registre 4487 : 0 
Registre 4488 : 0 
Registre 4489 : 0 
Registre 4490 : 0 
Registre 4491 : 0 
Registre 4492 : 0 
Registre 4493 : 0 
Registre 4494 : 0 
Registre 4495 : 0 
Registre 4496 : 0 
Registre 4497 : 0 
Registre 4498 : 0 
Registre 4499 : 0 
Registre 4500 : 0 
Registre 4501 : 0 
Registre 4502 : 0 
Registre 4503 : 0 
Registre 4504 : 0 
Registre 4505 : 0 
Registre 4506 : 0 
Registre 4507 : 0 
Registre 4508 : 0 
Registre 4509 : 469 
Registre 4510 : 10000 
Registre 4511 : 60 
Registre 4512 : 0 
Registre 4513 : 0 
Registre 4514 : 0 
Registre 4515 : 0 
Registre 4516 : 0 
Registre 4517 : 0 
Registre 4518 : 166 
Registre 4519 : 0 
Registre 4520 : 0 
Registre 4521 : 0 
Registre 4522 : 0 
Registre 4523 : 0 
Registre 4524 : 0 
Registre 4525 : 0 
Registre 4526 : 0 
Registre 4527 : 0 
Registre 4528 : 0 
Registre 4529 : 0 
Registre 4530 : 0 
Registre 4531 : 0 
Registre 4532 : 0 
Registre 4533 : 0 
Registre 4534 : 0 
Registre 4535 : 0 
Registre 4536 : 0 
Registre 4537 : 0 
Registre 4538 : 0 
Registre 4539 : 0 
Registre 4540 : 0 
Registre 4541 : 0 
Registre 4542 : 0 
Registre 4543 : 0 
Registre 4544 : 0 
Registre 4545 : 0 
Registre 4546 : 0 
Registre 4547 : 0 
Registre 4548 : 0 
Registre 4549 : 0 
Registre 4550 : 0 
Registre 4551 : 0 
Registre 4552 : 0 
Registre 4553 : 32 
Registre 4554 : 256 
Registre 4555 : 0 
Registre 4556 : 900 
Registre 4557 : 0 
Registre 4558 : -14336 
Registre 4559 : 10 
Registre 4560 : 9216 
Registre 4561 : 10 
Registre 4562 : 0 
Registre 4563 : 0 
Registre 4564 : 2 
Registre 4565 : 0 
Registre 4566 : 0 
Registre 4567 : 0 
Registre 4568 : 18 
Registre 4569 : 1 
Registre 4570 : 25700 
Registre 4571 : 0 
Registre 4572 : 759 
Registre 4573 : 0 
Registre 4574 : 0 
Registre 4575 : 0 
Registre 4576 : 1 
Registre 4577 : 0 
Registre 4578 : 0 
Registre 4579 : 0 
Registre 4580 : 800 
Registre 4581 : 1200 
Registre 4582 : 1200 
Registre 4583 : 1600 
Registre 4584 : 0 
Registre 4585 : 0 
Registre 4586 : 0 
Registre 4587 : 0 
Registre 4588 : 0 
Registre 4589 : 0 
Registre 4590 : 0 
Registre 4591 : 0 
Registre 4592 : 0 
Registre 4593 : 0 
Registre 4594 : 2560 
Registre 4595 : 0 
Registre 4596 : 0 
Registre 4597 : 0 
Registre 4598 : 0 
Registre 4599 : 0 
Registre 4600 : 0 
Registre 4601 : 0 
Registre 4602 : 2560 
Registre 4603 : 0 
Registre 4604 : 1024 
Registre 4605 : 0 
Registre 4606 : 0 
Registre 4607 : 0 
Registre 4608 : 0 

  1. Exploitation des données

J’ai déjà pu identifier quelques données (correspondance et variation comme sur l’application epool) :

ORP actuel, en mV : Registre 263, valeur 700
Consigne ORP, en mV : Registre 4236 , valeur 660
Taille du bassin, en m3 : Registre 4112, valeur 30
Température de l’eau : Registre 261, valeur 120, à diviser par 10
pH actuel : Registre 260, valeur 7663, à diviser par 1000
Gramme de sel / litre : Registre 262, valeur 2, à diviser par 10

Avec modpool on peut lire ces valeurs avec les commandes suivantes :

ORP actuel, en mV :
.\modpoll.exe -b 9600 -p none -m rtu -a 1 -r 263 -c 1 -t 4 COM3

Consigne ORP, en mV :
.\modpoll.exe -b 9600 -p none -m rtu -a 1 -r 4236 -c 1 -t 4 COM3

Taille du bassin, en m3 :
.\modpoll.exe -b 9600 -p none -m rtu -a 1 -r 4112 -c 1 -t 4 COM3

Température de l'eau :
.\modpoll.exe -b 9600 -p none -m rtu -a 1 -r 261 -c 1 -t 4 COM3

pH actuel :
.\modpoll.exe -b 9600 -p none -m rtu -a 1 -r 260 -c 1 -t 4 COM3

Gramme de sel / litre :
.\modpoll.exe -b 9600 -p none -m rtu -a 1 -r 262 -c 1 -t 4 COM3

Voilà pour le moment. Je vais commander un module RS485 vers TCP/IP pour pouvoir récupérer les valeurs sur HA facilement (Waveshare Industrial Serial Server RS485 to RJ45 Ethernet TCP/IP to Serial Module Support Rail-Mount Modbus Gateway : Amazon.fr: Informatique devrait faire l’affaire).

Si d’autres personnes trouvent d’autres valeurs n’hésitez pas à les partager (Consigne pH, numéro de série, alarmes…). Dès que j’ai un peu de temps j’essaierai d’en identifier d’autres.

Benjamin

3 « J'aime »

Intéressent je ne savais pas qu’on pouvais découvrir comme ça les info modbus… Car je dispo aussi d un yuze edf enr et en fait à priori cets raspberry pi remis en modbus à un compteur pour la. Production la consommation et le ballon 'd eau chaude

Il faut juste brancher un port série sur le bus rs485 et la ligne de commande et cets parti ?

Oui, perso pour commencer j’ai pris un adaptateur RS485 vers USB. Vu que ça fonctionne je suis maintenant parti sur ça :

Avec ça HA est client du serveur TCP.

Pour la partie ligne de commande modpoll-3.15 est gratuit et bien documenté. Pour trouver les registres utilisés le plus simple c’est d’utiliser un script comme celui que j’ai partagé.

1 « J'aime »

Hello!

Thanks for your work!

Here are the registers for the pH setpoint and the concentration of the pH corrector:

pH setpoint: Register 4208, divide the value by 256

pH corrector concentration : Register 4209

I will try to find more values.

Phil

1 « J'aime »

Hello, you are on a French-speaking forum, please speak in French.

Thanks you !

Si tu as d’autres valeurs n’hésites pas à les partager. De mon côté dès que j’ai un peu de temps je m’y remet :slight_smile:

Benjamin

1 « J'aime »

J’ai pu avancé aujourd’hui sur l’intégration sur Home Assistant :

La configuration du convertisseur RS485 à TCP :

Ensuite sur HA j’ai créé un fichier modbus.yaml dans le dossier config dans lequel j’ai mis ceci :

- name: "Piscine - Électrolyseur"
  type: tcp
  host: 192.168.1.106
  port: 4196
  delay: 5
  sensors:
    - name: "Piscine - Taille du basin"
      address: 4111
      input_type: holding
      unit_of_measurement: "m³"
      scan_interval: 10
      data_type: int16
    - name: "Piscine - Température de l'eau"
      address: 260
      input_type: holding 
      unit_of_measurement: "°C"
      scan_interval: 10
      data_type: int16 
      scale: 0.1 
      precision: 1

Et… ça fonctionne :slight_smile:

Petite subtilité, le numéro du registre est différent de celui trouvé avec Modpoll, il faut faire -1.

Y’a plus qu’à trouver les autres valeurs intéressantes et les intégrer. Ensuite je verrai si c’est jouable d’écrire une configuration (par exemple la consigne pH).

Benjamin

2 « J'aime »

Bonjour,

Merci pour toutes ces informations.

J’essaie de mon côté de connecter un Waterair Gold (qui n’est qu’un Pool technologie JustSalt Duo re-carrossé) avec un waveshare Modbus to wifi ((https://www.waveshare.com/rs232-485-to-wifi-eth-b.htm)) mais sans succès. Les led Tx ou Rx restent désespérément éteintes.

Je souhaiterai avoir votre avis sur les points suivants :

  • Réglage dans le menus de l’électrolyseur : J’ai passé le modbus RS485 sur « ON ».
    Il y a un autre réglage dans le menu Medbus: « adresse » qui est pré-réglé sur « 10 ». Je n’ai pas touché à ce réglage. Je ne sais pas à quoi il correspond dans le Waveshare. Sur quoi l’avez-vous réglé?

  • Bornier de l’électrolyseur : Il y a 3 ports de connexion sur le bornier « COM ». J’ai branché les deux de gauche avec A et B sur le waveshare. Faut-il connecter le 3ème? Normalement ce n’est pas nécessaire car il s’agit d’une terre qui sert à alimenter des périphériques et le waveshare à sa propre alim. Est-ce que vous confirmez ce branchement?

Côté paramétrage du WaveShare, je l’ai connecté à mon wifi, il est accessible et paramétré en ModBus 485 => Modbus RTU. Il est en mode serveur…

Côté HA ma config est valide et correspond bien à l’ip:port du waveshare. Mes entité sont créées. Rien ne remonte toutefois!

A partir de là je cale et je suis preneur de vos bons conseils.

A+

L’adresse réglée sur 10 personnellement je l’ai passé à 1.

Concernant la connexion physique en effet le 3ième fil n’est pas nécessaire.

Pour commencer je te conseille de tester avec Modpoll (l’adresse c’est l’option -a X ). J’ai mis les exemples de commande dans le 1er post. Ainsi tu pourras valider toute la partie connexion / câblage.

Avec Modpoll la commande ressemble à ceci :

modpoll.exe -m tcp -a 1 -r 4112 -c 1 -t 4 -p 4196 192.168.1.106

Une fois que ça ça fonctionne là tu peux tester avec le module Waveshare.

2 « J'aime »

Bonjour à tous,
j’ai un électrolyseur Pool Technologie premium pro 100, je viens de commander un module Waveshare RS485 vers WiFi/Ethernet et j’ai hâte de commencer les tests.
Je vais donc suivre ce fil avec la plus grande attention.
Merci et bonne soirée.
Cyril

Au top la commande modpol. Je récupère bien toutes les données.
J’ai passé le delay à 0 dans mon yaml (valeur par défaut préconisée par la doc ha modbus) Pourquoi avais-tu mis 5? Il y avait une raison particulière?

Je vais maintenant aller à la chasse aux autres infos de l’électrolyseur. Encore un grand merci à Pool Technologie pour leur aide précieuse (sic!)

Pour info, le log de HA :

2025-04-10 22:16:21.238 DEBUG (MainThread) [pymodbus.logging] Frame advanced, resetting header!!
2025-04-10 22:16:21.238 DEBUG (MainThread) [pymodbus.logging] send: 0x2 0xd0 0x0 0x0 0x0 0x6 0x1 0x3 0x10 0x70 0x0 0x1
2025-04-10 22:16:21.338 DEBUG (MainThread) [pymodbus.logging] recv: 0x2 0xd0 0x0 0x0 0x0 0x5 0x1 0x3 0x2 0x0 0xe old_data:  addr=None
2025-04-10 22:16:21.338 DEBUG (MainThread) [pymodbus.logging] Processing: 0x2 0xd0 0x0 0x0 0x0 0x5 0x1 0x3 0x2 0x0 0xe
2025-04-10 22:16:21.338 DEBUG (MainThread) [pymodbus.logging] decoded PDU function_code(3 sub -1) -> ReadHoldingRegistersResponse(dev_id=0, transaction_id=0, address=0, count=0, bits=[], registers=[14], status=1) 
2025-04-10 22:16:21.338 DEBUG (MainThread) [pymodbus.logging] Frame advanced, resetting header!!
2025-04-10 22:16:22.438 DEBUG (SyncWorker_5) [pymodbus.logging] Processing: 0x0 0x60 0x0 0x0 0x0 0x4f 0x1 0x3 0x4c 0x0 0x0 0x0 0x0 0xff 0xff 0xff 0xff 0xff 0xfe 0x9 0x5e 0xff 0xff 0xff 0xff 0x9 0x5e 0xff 0xff 0xff 0xff 0xff 0xff 0x0 0x0 0x0 0x0 0xc3 0x50 0xff 0xfd 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0xe 0xbb 0x1c 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0xff 0xff 0x0 0x0 0x0 0x0 0x80 0x0 0xa 0x20 0x80 0x0 0x80 0x0 0xff 0xfe 0x0 0x2 0x0 0x0
2025-04-10 22:16:22.438 DEBUG (SyncWorker_5) [pymodbus.logging] decoded PDU function_code(3 sub -1) -> ReadHoldingRegistersResponse(dev_id=0, transaction_id=0, address=0, count=0, bits=[], registers=[0, 0, 65535, 65535, 65534, 2398, 65535, 65535, 2398, 65535, 65535, 65535, 0, 0, 50000, 65533, 0, 0, 0, 0, 0, 0, 270, 47900, 0, 0, 0, 1, 65535, 0, 0, 32768, 2592, 32768, 32768, 65534, 2, 0], status=1)

Aller, la puissance d’electrolyse en %:

    - name: "Electrolyseur - Puissance électrolyse"
      address: 4168
      input_type: holding 
      unit_of_measurement: "%"
      scan_interval: 30
      data_type: int16 
      scale: 1

Pour le delay j’ai finalement mis 20, pour laisser le temps à l’électrolyseur de démarrer avant de lire les 1ères valeurs (sinon jusqu’à ce qu’il ait complétement démarré les valeurs reçues seront incohérentes (ex: 0°C pour la température)).

La 4168 me donne 25600, ça correspond à quoi exactement ? Si c’est en % il faut appliquer une division par 1000 ?

Pour le moment voici ce que j’utilise :

- name: "Piscine - Électrolyseur"
  type: tcp
  host: 192.168.1.106
  port: 4196
  delay: 20
  sensors:
    - name: "Piscine - Taille du basin"
      unique_id: "piscine_taille_bassin"
      address: 4111
      input_type: holding
      unit_of_measurement: "m³"
      scan_interval: 60
      data_type: int16
    - name: "Piscine - pH"
      unique_id: "piscine_ph_eau"
      address: 259
      input_type: holding 
      unit_of_measurement: "pH"
      scan_interval: 604800  
      data_type: int16 
      scale: 0.001 
      precision: 1
    - name: "Piscine - Consigne pH"
      unique_id: "piscine_consigne_ph_eau"
      address: 4207
      input_type: holding 
      unit_of_measurement: "pH"
      scan_interval: 604800  
      data_type: int16 
      scale: 0.000390625
      precision: 1
    - name: "Piscine - Température de l'eau"
      unique_id: "piscine_temperature_eau"
      address: 260
      input_type: holding 
      unit_of_measurement: "°C"
      scan_interval: 604800  
      data_type: int16 
      scale: 0.1 
      precision: 1
    - name: "Piscine - Taux de sel"
      unique_id: "piscine_taux_sel_eau"
      address: 261
      input_type: holding 
      unit_of_measurement: "g/L"
      scan_interval: 604800  
      data_type: int16 
      scale: 0.1 
      precision: 1
    - name: "Piscine - ORP"
      unique_id: "piscine_orp_eau"
      address: 262
      input_type: holding 
      unit_of_measurement: "mV"
      scan_interval: 604800  
      data_type: int16
    - name: "Piscine - Consigne ORP"
      unique_id: "piscine_consigne_orp_eau"
      address: 4235
      input_type: holding 
      unit_of_measurement: "mV"
      scan_interval: 604800 
      data_type: int16

Ce qui donne :

Il faut également penser à gérer le cas ou l’électrolyseur est éteint (car les sensors deviennent indisponibles).

Pour ça j’ai configuré une lecture des valeurs toutes les 604800 secondes (tous les 7 jours).

Ensuite j’ai créé une automatisation qui lit les valeurs lorsque la filtration s’allume puis toutes les 9 minutes. Avant la lecture des valeurs il y a un délai d’une minute : Si l’électrolyseur vient de s’allumer ça lui laisse le temps de démarrer. Si c’est le cycle des 9 minutes qui déclenche l’automatisation alors au total ça sera actualisé toutes les 10 minutes.

Voici l’automatisation :

alias: Piscine - Gestion de la MAJ des données depuis l'électrolyseur
description: >-
  Si la filtration de la piscine s'allume ou toutes les 10 minutes, les données de
  l'électrolyseur sont actualisées.
triggers:
  - entity_id: switch.piscine_filtration
    to: "on"
    trigger: state
    alias: Quand la filtration de la piscine s'active
  - alias: Toutes les 9 minutes
    minutes: /09
    trigger: time_pattern
conditions:
  - condition: state
    entity_id: switch.piscine_filtration
    state: "on"
    alias: Si la filtration de la pisicne est activée
actions:
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
    alias: Attendre une minute
  - action: homeassistant.update_entity
    data:
      entity_id:
        - sensor.piscine_consigne_orp
        - sensor.piscine_consigne_ph
        - sensor.piscine_orp
        - sensor.piscine_ph
        - sensor.piscine_taille_du_basin
        - sensor.piscine_taux_de_sel
        - sensor.piscine_temperature_de_l_eau
    alias: Lecture des valeurs depuis l'électrolyseur


Benjamin

Bizarre, moi, je récupère directement la consigne d’ électrolyse. Apparemment pour toi, il faut le diviser par 256, l’électrolyseur est donc sur 100%

Bonjour,
j’ai reçu hier le module waveshare wifi, une fois bien paramétré je reçois bien les informations de l’électrolyseur.
j’ai fais une petite application qui me permet de lire une plage de registre ou un registre bien précis.
Mon électrolyseur à une sécurité quand la pompe est arrêtée, il se met en ‹ Manque d’eau ›.
J’ai donc lancé un scan du registre 0 au registre 4607 avec l’électrolyseur en sécurité et un scan avec l’électrolyseur fonctionnant.
J’ai fait un tableau excel comparant les résultats histoire de trouver les registres dont la valeur à changée.


je peux fournir le ficher excel si besoin.

1 « J'aime »

Oui ton fichier est intéressant, mets le en pièce jointe.

J’essaie de mon côté de basculer les paramètres en input pour pouvoir modifier via hass comme on peut le faire avec l’application e-pool.
A priori, il ne suffit pas de passer en « input-type : input », ca ne marche pas

Pour écrire il faut utiliser l’action modbus.write_register

action: modbus.write_register
data:
  address: 4235
  slave: 1
  value: 670
  hub: "Piscine - Électrolyseur"

Le nom du hub doit être le même que le name défini dans la déclaration du serveur modbus :

- name: "Piscine - Électrolyseur"
  type: tcp
  host: 192.168.1.106
  port: 4196
  delay: 20

A partir de là il faut créer une entrée de type nombre dans HA et créer une automatisation qui va exécuter modbus.write_register lorsque cette entrée est modifiée.

Je pense que je vais crééer une intégration, ça sera plus simple à gérer.

1 « J'aime »

A priori le registre 4463 (4464 avec Modpoll) indique la durée totale de l’électrolyseur en heure sur mon électrolyseur.

Lien wetransfer pour le fichier excel: https://we.tl/t-lJYSt918hn

Suite de mes tests:
le registre 1058 semble être le pourcentage de production ORP actuel.
le registre 4461, le temps de production ORP du jour (en mn)
le registre 1061 à diviser par 1000, la tension ou l’intensité appliquée à la cellule d’électrolyse, je ferai des mesures pour confirmer).

Pour le calcul de pourcentage de production, j’applique le calcul suivant: (val/1000)*5

dans le tableau de test, j’ai lancé 5 mesures espacées de 30s en modifiant la consigne de production à chaque fois.
La première colonne est le taux ORP mesuré
La 2eme colonne est la tension ou intensité appliquée à la cellule
La 3eme colonne est le ‹ pourcentage › raw de production appliqué à la cellule
La 4eme colonne est le temps de production du jour
La 5eme colonne est la consigne de production
La 6eme colonne est le pourcentage de production calculé

je vais essayer de confirmer tout ça ce we

@ Cyril44 : Super ! Ce sont des valeurs intéressantes à récupérer.

De mon côté j’essai de créer une intégration. Pour le moment je récupère les valeurs de bases. (seulement si la filtration est allumée, pour ne pas qu’il y ait d’erreur si l’électrolyseur n’est pas alimenté) :

Lorsque j’aurai bien avancé je partagerai ça :slight_smile:

2 « J'aime »