esp8266 vs uno ==> erreur "const char*' to 'long unsigned int' [-fpermissive]"

bonjour
suite a la construction d’un programme en adaptant un exemple arduino avec la mise en place de thingspeak
tout marche bien en compilant avec une carte arduino uno ,mega mais il y a toujours un Mais
quand je compile avec un type de carte nodemcu esp12
ja l’erreur suivante

error: invalid conversion from 'const char*' to 'long unsigned int' [-fpermissive]
 unsigned long myChannelNumber = "1234";

j’ai essayer divers solutions mais rien ne marche
pouvez-vous m’aider , voici mon code

//ds1820
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS_1 2
#define ONE_WIRE_BUS_2 4

OneWire oneWire_in(ONE_WIRE_BUS_1);
OneWire oneWire_out(ONE_WIRE_BUS_2);

DallasTemperature sensor_inhouse(&oneWire_in);
DallasTemperature sensor_outhouse(&oneWire_out);

int temperature_un ;
int temperature_un_min ;
int temperature_un_max ;
int temperature_un_moyenne ;

int temperature_deux ;
int temperature_deux_min ;
int temperature_deux_max ;
int temperature_deux_moyenne ;

// wifi
#include <WiFi.h>
//#include <ESP8266WiFi.h>


//thingspeak
#include <ThingSpeak.h>
//#include "secrets.h"
unsigned long myChannelNumber = "1234";
// char * myChannelNumber = "1234";
const char * myWriteAPIKey = "SECRET_WRITE_APIKEY";
int thingiverse_delaie = 20000 ;
int thingiverse_set ;       // enregistrement heure minute pour debut delaie thingiverse


void setup(void)
{
    Serial.begin(9600);
    Serial.println("boot port serie "); 
    
    Serial.print("port temperature ONE_WIRE_BUS_1  ");
    Serial.println(ONE_WIRE_BUS_1);
    Serial.println("init port temperature ONE_WIRE_BUS_1  ");
    sensor_inhouse.begin(); 
    Serial.println("ONE_WIRE_BUS_1 reussi "); 
    sensor_inhouse.requestTemperatures();    
    Serial.print("temperature capteur 1 : ");
    Serial.println(sensor_inhouse.getTempCByIndex(0));
    Serial.println(" \xC2\xB0"); 
    Serial.print("temperature_un  ");
    Serial.println(temperature_un);
    Serial.print("temperature_un_min  ");
    Serial.println(temperature_un_min);
    Serial.print("temperature_un_max  ");
    Serial.println(temperature_un_max);
    Serial.print("temperature_un_moyenne  ");
    Serial.println(temperature_un_moyenne);



    sensor_outhouse.begin();
    
    WiFiClient  client;
    ThingSpeak.begin(client); // connexion (TCP) du client au serveur
    Serial.println("init ThingSpeak ");
    Serial.print("https://thingspeak.com/channels/");
    Serial.println(myChannelNumber);

//      WiFi.hostname("esp8266chaudiere");
}

void loop(void)
{
    Serial.print("demande et capture des capteurs de temperatures...");
    sensor_inhouse.requestTemperatures();
    sensor_outhouse.requestTemperatures();
    Serial.println(" fait");


    Serial.print("temperature capteur 1 : ");
    Serial.println(sensor_inhouse.getTempCByIndex(0));
    Serial.println(" \xC2\xB0");
    ThingSpeak.setField(1, sensor_inhouse.getTempCByIndex(0));  // préparation du field1
        if (sensor_inhouse.getTempCByIndex(0) < temperature_un_min ) {
          temperature_un_min = sensor_inhouse.getTempCByIndex(0)  ;
        }
         if (sensor_inhouse.getTempCByIndex(0) > temperature_un_max ) {
          temperature_un_max = sensor_inhouse.getTempCByIndex(0)  ;
        }
        
    Serial.print("temperature capteur 2 : ");
    Serial.print(sensor_outhouse.getTempCByIndex(0));
    Serial.println(" \xC2\xB0");
    ThingSpeak.setField(2, sensor_outhouse.getTempCByIndex(0));  // préparation du field2
         if (sensor_outhouse.getTempCByIndex(0) > temperature_deux_min ) {
          temperature_deux_min = sensor_outhouse.getTempCByIndex(0)  ;
        }
         if (sensor_outhouse.getTempCByIndex(0) < temperature_deux_max ) {
          temperature_deux_max = sensor_outhouse.getTempCByIndex(0)  ;
        }

        
    Serial.print("https://thingspeak.com/channels/");
    Serial.println(myChannelNumber);
    
    
 unsigned long currentMillis = millis();
  if ((currentMillis - thingiverse_set) >= thingiverse_delaie ) {
    thingiverse_set = currentMillis; 
     int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
     if(x == 200){
    Serial.println(" update thingspeak reussie");
  }
  else{
    Serial.println("Problem mise a jour thingspeak. HTTP error code " + String(x));
  }
     
    }

}

je vous remercie d’avance pour votre aide

Un unsigned long est un nombre.
On ne peut pas lui affecter une chaîne de caractères.
Il serait étonnant que cela fonctionne avec un ARDUINO, même si la compilation est OK.

j'ai essayer hier avec un "const char *" voir juste un char idem

D'après le prototype :

	int writeFields(unsigned long channelNumber, const char * writeAPIKey)

writeFields attend un unsigned long en premier argument.

Donc tu dois lui passer ce type de variable, et non pas un char *, un const char * ou un char.

Bonjour

si le numéro de canal ThingSpeak est 1234 que viennent faire les guillemets ci dans la ligne suivante ?

 unsigned long myChannelNumber = "1234";

Autre chose : si la carte utilisée est une NodeMCU dotée d’un module ESP-12 (ESP8266 à l’intérieur) pourquoi mettre de côté la libairie WiFi adaptée aux ESP8266 au profit de celle adaptée aux ESP32 ?

// wifi
#include <WiFi.h>
//#include <ESP8266WiFi.h>

→ Bien étudier l’exemple WriteSingleField pour ESP8266 fourni avec la librairie ThingSpeak

merci al1fch et hbachetti d'avoir regarder mon code

je ne voyais pas d'ou pouvait provenir le soucis

pour al1fch
oui on va dire que 1234 est mon canal thingspeak

pour le deuxieme point je ne savais pas la difference entre les 2 bibliothèques je pensais que c'etait une bibliotheque améliorer pour tout les modules wifi ou bien une bibliotheque generique

merci encore a tous

Alors essaye :

unsigned long myChannelNumber = 1234;